以下代码按以下顺序排列列表: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 :(得分:0)
您的集合的元素存储为字符串,因此它们按字母顺序排序。我相信如果使用parseInt函数将元素添加为整数,则排序应该按预期工作。
答案 1 :(得分:0)
你只需要改变:
vals.push(lis[i].innerHTML);
要:
vals.push(+lis[i].innerHTML);
这会将String
转换为数字并按照您的意愿进行排序。
答案 2 :(得分:0)
而不是
vals.sort()
你应该这样做:
vals.sort(function(a,b){return a-b});
将对数字进行排序。
答案 3 :(得分:0)
实际上,将字符串和整数等字符串排序为整数是一种很好的做法。
因此,我建议您为可能在项目中使用的数据类型编写各种排序函数,并使用regexp确定要使用的函数。
还有一个很棒的jQuery插件,可以轻松扩展:http://tablesorter.com/docs/