2012-06-26 2 views
0

다음 코드는 목록을 다음과 같이 정렬합니다. 1. item, 10. item, 100. item ... 숫자로 목록을 정렬하려면 무엇을 추가하거나 변경합니까 (1,2,3 ...) ?숫자 순서 목록

function sortUnorderedList(ul, sortDescending) { 
     if(typeof ul == "string") 
     ul = document.getElementById(ul); 

     var lis = ul.getElementsByTagName("LI"); 
     var vals = []; 

     for(var i = 0, l = lis.length; i < l; i++) 
     vals.push(lis[i].innerHTML); 

     vals.sort(); 

     if(sortDescending) 
     vals.reverse(); 

     for(var i = 0, l = lis.length; i < l; i++) 
     lis[i].innerHTML = vals[i]; 
    } 

    window.onload = function() { 
     var desc = false; 
     document.getElementById("test").onclick = function() { 
     sortUnorderedList("lister", desc); 
     sortUnorderedList("bin", desc); 
     desc = !desc; 
     return false; 
     } 
    } 

답변

0

세트의 요소는 알파벳순으로 정렬되도록 문자열로 저장됩니다. parseInt 함수를 사용하여 정수로 요소를 추가하면 정렬이 예상대로 작동해야한다고 생각합니다.

vals.push(lis[i].innerHTML); 

에 :

vals.push(+lis[i].innerHTML); 

이 숫자로 String을 변환하고 당신이 원하는대로 주문 작업을 할 것입니다

0

당신은 변경해야합니다.

0

대신

vals.sort() 

당신은해야한다 "숫자"정렬을 할 것입니다

vals.sort(function(a,b){return a-b}); 

.

0

사실 문자열을 int와 int처럼 int로 정렬하는 것이 좋습니다.

그래서 여러분의 프로젝트에 적용될 수있는 데이터 유형을위한 다양한 정렬 함수를 작성하고 regexp를 사용하여 어떤 함수를 사용할 지 결정하십시오.

또한 쉽게 확장 할 수있는 훌륭한 jQuery 플러그인이 있습니다. http://tablesorter.com/docs/