2012-01-08 3 views
7

http://jsfiddle.net/nicktheandroid/6BAfH/1/L'ordinamento semplice per numero di script, 3 righe, non risolve correttamente gli ultimi pochi, perché?

Gli elementi di elenco sono ordinati di conseguenza in base al numero nel relativo intervallo. Perché gli ultimi numeri sono fuori uso? Non ho capito bene.

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

FYI: si potrebbe usare 'tornare parseInt ($ ('arco', b) .text()) - parseInt ($ ('arco', a) .text())' – Stefan

+1

Uso parseFloat: http : //jsfiddle.net/6BAfH/3/ – noob

+0

Stefan, richiede comunque la radix, quindi il tuo codice mi fa lo stesso errore del mio. Penso che parseFloat sia la strada da percorrere. –

risposta

13

Benvenuti nel mondo dei numeri ottali.

Se la stringa di input inizia con "0", il radix è otto (ottale). Questa funzione non è standard, e alcune implementazioni deliberatamente non la supportano (utilizzando invece la radix 10). Per questo motivo, specifica sempre una radice quando usi parseInt.

Utilizzare il radice per base 10 con parseInt.

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

ah è vero, meraviglioso, grazie signore. –

Problemi correlati