2012-06-26 61 views
0

下面的代碼命令列表如下:1.項目,10.項目,100.項目...什麼我添加或更改以數字順序列表(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函數將元素添加爲整數,我相信你的排序應該按預期工作。

0

你只需要改變:

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

要:

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

這將String轉換爲數字,使訂貨工作如你所願。

0

而不是

vals.sort() 

你應該做的:

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

,會做那種 「爲數字」。

0

實際上,將字符串和整數等字符串排序爲整數是一種很好的做法。

所以我建議你寫一些數據類型的各種排序函數,這些數據類型可能會在你的項目中出現,並且用正則表達式決定使用哪個函數。

還有一個很棒的jQuery插件,可以很容易地擴展:http://tablesorter.com/docs/