2010-08-23 17 views
30

Questo codice non funziona:jQuery ottenere testo come numero

var number = $(this).find('.number').text(); 
var current = 600; 
if (current > number){ 
    // do something 
} 

HTML:

<div class="number">400</div> 

sembra che ci sia qualche problema con la conversione di text() dal valore di testo simile a numero.

Qual è la soluzione?

risposta

102

Usare sempre parseInt con una radice (base) come secondo parametro, o si ottengono risultati imprevisti:

var number = parseInt($(this).find('.number').text(), 10); 

Una variante popolare è comunque di utilizzare + come operatore unitario. Questo sarà sempre convertire con base 10 e mai gettare un errore, basta tornare a zeroNaN che possono essere testati con la funzione isNaN() se si tratta di un numero non valido:

var number = +($(this).find('.number').text()); 
+7

'+' non restituirà zero per un invalido numero, restituirà 'NaN'. IMO, questo lo rende più ideale di * parseInt() *, perché * parseInt * tenterà di trovare un numero all'inizio di una stringa malformata che può risultare in confusione (ad esempio 1.000 diventa 1). '+ str' è come scrivere' Number (str) '. –

+0

Doh, hai ragione. – RoToRa

+0

Qualcosa in cui mi sono imbattuto durante l'uso di parseInt() è che quando ho ottenuto un risultato NaN, avrebbe rovinato i calcoli. Ho risolto questo problema utilizzando un operatore bit a bit. Un esempio è: 'parseInt ($ (this) .find ('. Number'). Text() || 0)' –

13

myInteger = parseInt(myString);

Si tratta di uno standard funzione javascript.

1
var number = parseInt($(this).find('.number').text()); 
var current = 600; 
if (current > number) 
{ 
    // do something 
} 
1
number = parseInt(number); 

Questo dovrebbe fare il trucco.

3

Utilizzare il metodo parseInt javascript (http://www.w3schools.com/jsref/jsref_parseint.asp)

var number = parseInt($(this).find('.number').text(), 10); 
var current = 600; 
if (current > number){ 
    // do something 
} 

Non dimenticate di specificare il valore di radix 10 che racconta parseInt che è in base 10.

Problemi correlati