2012-03-19 21 views
35

¿Alguien me puede ayudar a entender por qué el siguiente código de jQuery no funciona? Quiero devolver un número entero de una entrada del usuario.parseInt con jQuery

var test = parseInt($("#testid")); 

Gracias & bye!

+5

Por favor, defina "doesn no funciona " ¿Qué esperas que pase, y qué sucede realmente? –

Respuesta

104
var test = parseInt($("#testid").val(), 10); 

usted tiene que decir que desea que el value de la entrada a la que está apuntando.

Y también, siempre proporcione el segundo argumento (raíz) a parseInt. Intenta ser demasiado inteligente y detectarlo automáticamente si no se proporciona y puede conducir a resultados inesperados.

Proporcionando 10 asume que quiere una base 10 número.

+12

Siempre debe especificar la raíz al llamar a 'parseInt'. –

+0

¿Qué pasa con la compatibilidad de parseInt? –

4
var test = parseInt($("#testid").val()); 
+2

Siempre debe especificar la raíz al llamar a 'parseInt'. –

13

dos cuestiones:

  1. estás pasando la envoltura del elemento de jQuery en parseInt, que no es lo que quiere, como parseInt llamarán toString en él y volver "[object Object]". Debe usar val o text o algo así (según el elemento) para obtener la cadena que desea.

  2. Usted no está diciendo parseInt qué raíz (número base) debe usar, lo que lo pone en riesgo de entrada impar que le da resultados impares cuando parseInt adivina qué raíz utilizar.

Fix si el elemento es un campo de formulario:

//        vvvvv-- use val to get the value 
var test = parseInt($("#testid").val(), 10); 
//         ^^^^-- tell parseInt to use decimal (base 10) 

Fix si el elemento es otra cosa y si desea utilizar el texto dentro de ella:

//        vvvvvv-- use text to get the text 
var test = parseInt($("#testid").text(), 10); 
//          ^^^^-- tell parseInt to use decimal (base 10) 
Cuestiones relacionadas