2010-08-23 13 views
30

Este código no funciona:jQuery llegar texto como el número

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

HTML:

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

Parece que hay algún problema con la conversión de text() del valor de texto como al número.

¿Cuál es la solución?

Respuesta

102

Siempre utilizar parseInt con una raíz (base) como segundo parámetro, o se obtendrá resultados inesperados:

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

Una variación popular sin embargo es utilizar + como operador unitario. Esto siempre será convertir con la base 10 y nunca generará un error, simplemente volver ceroNaN que puede ser probado con la función isNaN() si se trata de un número no válido:

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

'+' no retornará cero para un inválido número, devolverá 'NaN'. IMO, esto lo hace más ideal que * parseInt() *, porque * parseInt * intentará encontrar un número al comienzo de una cadena mal formada que puede generar confusión (por ejemplo, 1,000 se convierte en 1). '+ str' es lo mismo que escribir' Number (str) '. –

+0

Doh, tienes razón. – RoToRa

+0

Algo con lo que me encontré cuando uso parseInt() es que cuando obtuve un resultado de NaN, podría desordenar los cálculos. Lo arreglé usando un operador bit a bit. Un ejemplo es: 'parseInt ($ (this) .find ('. Number'). Text() || 0)' –

13

myInteger = parseInt(myString);

Es un estándar de función de JavaScript.

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

Que debe hacer el truco.

3

Utilice el método 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 
} 

No se olvide de especificar el valor de la raíz 10 que dice parseInt que está en la base 10.

Cuestiones relacionadas