Foros del Web » Programando para Internet » Javascript »

Por que un valor entero pasa como string

Estas en el tema de Por que un valor entero pasa como string en el foro de Javascript en Foros del Web. Hola que tal, estoy tratando de hacer esto.. <input type="text" value="12" class="idfoto"/> @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original $ ( document ) . ready ...
  #1 (permalink)  
Antiguo 25/06/2013, 17:49
Avatar de erozwashere  
Fecha de Ingreso: noviembre-2012
Ubicación: mex
Mensajes: 176
Antigüedad: 7 años
Puntos: 0
Por que un valor entero pasa como string

Hola que tal, estoy tratando de hacer esto..

<input type="text" value="12" class="idfoto"/>

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2. var foto = $(selector).children('.idfoto').val();
  3.  
  4. alert(foto); //esto muestra este valor ejemplo 12 , pienso que es un valor tipo int
  5.  
  6. // luego al hacer esto
  7.  
  8. alert(foto+1); // muestra 121 siendo 12 el valor anterior y el 1, y es aqui el error //ya que no se le suma el 1, para mostrar un 13
  9.  
  10.  
  11. ///////////////////////////////////// pero si yo hago esto y le asigno un valor estatico
  12. var foto = 12;
  13.  
  14. alert(foto);/// muestra el valor 12
  15.  
  16. alert(foto+1);/// muestra 13
  17.  
  18. });

Aque se debe este error??
  #2 (permalink)  
Antiguo 25/06/2013, 19:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 10 años, 6 meses
Puntos: 1485
Respuesta: Por que un valor entero pasa como string

buenas,
muevo al foro Javascript porque realmente no es un asunto concerniente a jquery sino del lenguaje en si. dicho esto, se debe a la operador y coherción. operador porque el signo + (sumar) también puede ser concatenar. coherción porque al ser los operandos de distintos tipos —un string y un entero—, javascript convierte el entero a string para así realizar la concatenación.

todos los datos que obtienes mediante control de formularios a través de javascript siempre son de tipo string. por lo que antes de utilizarlos debes convertirlo al tipo de dato que deseas, en este caso Integer. lo puedes hacer con la función parseInt o parseFloat en caso de tener decimales.

nota aclaratoria... creo que en html5 puedes especificar que el INPUT es de tipo numérico pero no tengo claro si al leerse con javascript es de tipo integer o string.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 25/06/2013, 20:35
Avatar de erozwashere  
Fecha de Ingreso: noviembre-2012
Ubicación: mex
Mensajes: 176
Antigüedad: 7 años
Puntos: 0
Respuesta: Por que un valor entero pasa como string

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
muevo al foro Javascript porque realmente no es un asunto concerniente a jquery sino del lenguaje en si. dicho esto, se debe a la operador y coherción. operador porque el signo + (sumar) también puede ser concatenar. coherción porque al ser los operandos de distintos tipos —un string y un entero—, javascript convierte el entero a string para así realizar la concatenación.

todos los datos que obtienes mediante control de formularios a través de javascript siempre son de tipo string. por lo que antes de utilizarlos debes convertirlo al tipo de dato que deseas, en este caso Integer. lo puedes hacer con la función parseInt o parseFloat en caso de tener decimales.

nota aclaratoria... creo que en html5 puedes especificar que el INPUT es de tipo numérico pero no tengo claro si al leerse con javascript es de tipo integer o string.

Hola, Gracias lo he resuelto con ParseInt, anteriormente use el input type="number" y no funciono, Gracias por responder

Etiquetas: entero, jquery, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:29.