按数字顺序排列列表
Numerically order list
以下代码按如下方式对列表进行排序: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;
}
}
集合的元素存储为字符串,因此它们按字母顺序排序。我相信如果您使用 parseInt 函数将元素添加为整数,您的排序应该按预期工作。
你只需要改变:
vals.push(lis[i].innerHTML);
自:
vals.push(+lis[i].innerHTML);
这会将String
转换为数字,并使排序按您的意愿工作。
而不是
vals.sort()
你应该做:
vals.sort(function(a,b){return a-b});
这将对"数字"进行排序。
实际上,将字符串和整数等字符串排序为整数是一种很好的做法。
因此,我建议您为可以在项目中应用的数据类型编写各种排序函数,并使用正则表达式确定要使用的函数。
还有一个很棒的jQuery插件,可以很容易地扩展:http://tablesorter.com/docs/
相关文章:
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- 响应式列表,可在浏览器缩小时重新排列
- 如何允许我的访问者通过拖放来排列列表项目
- 如何在javascript中排列数字列表
- 按字母顺序排列列表
- 按数字顺序排列列表
- 从顶部添加条目,以角度排列待办事项列表
- 根据数字排序顺序更新自动重新排列HTML列表
- 使用jquery按行排列列表
- 在具有重复项的所有可能排列的列表中查找给定字符串的秩
- 在所有可能排列的列表中查找给定字符串的秩
- 不能使用Angular.js按字母顺序排列下拉列表值
- 当一个项目被重新排列或在列表之间移动时触发
- 在jQuery中重新排列列表元素
- 使用JavaScript处理和重新排列纯文本嵌套列表
- 根据文本框中重新排列的无序列表获取值
- 使用javascript/jQuery在选择列表中排序选项.但不是按字母顺序排列的
- 按字母顺序排列带标题的HTML列表
- 如何重新订购<选项>在jquery选择的下拉列表中按字母顺序排列
- 使用jquery在两个列表中传输和排列数据