数字订单列表

时间:2012-06-26 14:31:59

标签: javascript drag-and-drop

以下代码按以下顺序排列列表: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;
      }
    }

4 个答案:

答案 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/