Ver Mensaje Individual
  #9 (permalink)  
Antiguo 10/09/2012, 16:40
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 15 años
Puntos: 45
Respuesta: Error NaN en Javascript

Buenas,

están ocurriendo dos cosas diferentes:

en javascript cualquier variable puede contener cualquier tipo de dato y pueden variar de tipo según en el contexto en que se utilicen. Si intentamos hacer una operación con una variable que no tiene el tipo de dato adecuado, intentará primero convertir el dato para poder hacer la operación. Por eso en la multiplicación no hay problema porque es un operador que sólo se utiliza con tipos numéricos, se convierten a números y se hace la multiplicación, pero con la suma se pueden usar números y cadenas con resultados diferentes y además las cadenas tienen preferencia a la hora de hacer una conversión automática, si añadimos además como ya se ha dicho, que todo lo que hay en un fichero html es texto incluido el valor de los campos de texto de los formularios, el resultado que se obtendría sería la concatenación de los valores y no la suma. Y esto nos lleva al segundo problema, ya que según comentas el resultado es NaN y esto es como ya también se ha mencionado por el uso de eval.

El comportamiento de eval es un tanto particular, en el caso de que la expresión que se evalue no devuelva ningún valor devuelve undefined que en un entorno numérico se traduce por NaN, en tu ejemplo, la primera vez que evalues totaltext.value te dará undefined si no has definido un valor inicial para ese campo y sumar ese valor con un número daría NaN. El resultado sería el esperado si la suma la hubieras hecho dentro de eval porque la suma se evaluaría como parte de la expresión antes de devolver el resultado con lo que total ya no valdría undefined y totaltext.value no sería NaN.