2012-01-08 7 views
7

http://jsfiddle.net/nicktheandroid/6BAfH/1/数字のスクリプト、3行で簡単に並べ替えると、最後のliが正しく並べ替えられないのはなぜですか?

リスト要素は、スパン内の番号によってソートされます。最後のいくつかの数字が順不同であるのはなぜですか?よくわかりません。 8進数の世界へ

のjQuery

function sortEm(a,b){ 
    return parseInt($('span', a).text()) < parseInt($('span', b).text()) ? 1 : -1; 
} 

$('li').sort(sortEm).prependTo($('ul#test')); 

HTML

<ul id="test"> 

    <li> Cups 
     <span>12</span> 
    </li> 

    <li> Plates 
     <span>18</span> 
    </li> 

    <li> Forks 
     <span>03</span> 
    </li> 

    <li> Knives 
     <span>08</span> 
    </li> 

    <li> Bowls 
     <span>55</span> 
    </li> 
</ul> 
+0

:あなたは '返すのparseInt($( 'スパン'、B)の.text())を使用することができ - のparseInt($( 'スパン'、A)の.text())' – Stefan

+1

使用parseFloatは:HTTPを://jsfiddle.net/6BAfH/3/ – noob

+0

ステファン、それでも基数が必要なので、あなたのコードは私のものと同じエラーになります。私はparseFloatが行く方法だと思います。 –

答えて

13

ようこそ。

入力文字列が "0"で始まる場合、基数は8(8進数)です。この機能は標準ではなく、一部の実装では意図的にサポートしていません(基数10を使用する代わりに)。このため、常にparseIntを使用するときは基数を指定します。

基数10を基数にしてparseIntとします。 FYI

parseInt($('span', a).text(), 10) 
+0

あ、そうです、ありがとうございます。 –

関連する問題