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;
      }
    }
4

4 に答える 4

0

それ以外の

vals.sort() 

やったほうがいい:

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

それは「数字のために」ソートを行います。

于 2012-06-26T14:41:54.270 に答える
0

変更するだけです:

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

に:

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

これにより、 が数値に変換Stringされ、希望どおりに順序付けが行われます。

于 2012-06-26T14:38:47.603 に答える
0

実際には、文字列や int などの文字列を int としてソートすることをお勧めします。

したがって、プロジェクトに現れる可能性のあるデータ型のさまざまな並べ替え関数を作成し、正規表現を使用して使用する関数を決定することをお勧めします。

また、簡単に拡張できる優れた jQuery プラグインもあります: http://tablesorter.com/docs/

于 2012-06-26T15:26:10.487 に答える
0

The elements of your set are stored as strings so they are ordered alphabetically. I believe your sort should work as expected if you add your elements as integers, using the parseInt function.

于 2012-06-26T14:35:54.303 に答える