Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con IsNaN en función

Estas en el tema de Problema con IsNaN en función en el foro de Javascript en Foros del Web. Hola, estoy con un problema que no he podido solucionar!!! La función es la siguiente: <script language="javascript" type="text/javascript"> function duplicar(valor) { if (IsNaN(valor)) { alert ...
  #1 (permalink)  
Antiguo 20/08/2014, 12:20
rpa
 
Fecha de Ingreso: agosto-2014
Mensajes: 6
Antigüedad: 9 años, 8 meses
Puntos: 0
Problema con IsNaN en función

Hola, estoy con un problema que no he podido solucionar!!! La función es la siguiente:

<script language="javascript" type="text/javascript">

function duplicar(valor) {

if (IsNaN(valor)) {

alert ("Debe ingresar un numero");

} else {

var duplicado = valor * 2;
alert (duplicado);

}

}

</script>

No sé por qué no reconoce la función IsNaN, ya que si cambio la línea del if por la siguiente:

if (valor==1) {


Funciona perfecto... Perdón por lo básico de la pregunta pero ya me he quebrado la cabeza y no lo he logrado solucionar... Muchas gracias a quien me quiera y pueda ayudar... Saludos
  #2 (permalink)  
Antiguo 20/08/2014, 13:15
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Problema con IsNaN en función

Funciona bien, pero hay un pequeño problema: los números no se validan con isNaN

Posible solución: usar el input number de HTML5.
  #3 (permalink)  
Antiguo 20/08/2014, 15:06
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problema con IsNaN en función

prefiero usar una expresión regular, pero la función isNaN() es perfectamente válida para saber si un valor es numérico o no. el problema que planteas, es que los valores recibidos de un formulario son del tipo string, aunque sea un número

Cita:
console.log(isNaN(1)); // false
console.log(isNaN('1')); // true --> esto es lo que estás recibiendo
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 20/08/2014, 16:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con IsNaN en función

Podrías hacerlo usando el método isFinite:

Código Javascript:
Ver original
  1. console.log(Number.isFinite(5)); //true
  2. console.log(Number.isFinite("5")); //false
  3. console.log(Number.isFinite("")); //false
  4. console.log(Number.isFinite(5.5)); //true
  5. console.log(Number.isFinite(true)); //false

Este método es soportado en Chrome 19+, Firefox 16+ y Opera 15+, para otros navegadores, puedes implementar dicho método como se explica aquí.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 20/08/2014, 17:01
rpa
 
Fecha de Ingreso: agosto-2014
Mensajes: 6
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Problema con IsNaN en función

Gracias a todos por las respuestas!!! al final fue algo tan trivial como reemplazar IsNaN por isNaN y todo se arregló... Saludos
  #6 (permalink)  
Antiguo 21/08/2014, 05:01
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problema con IsNaN en función

me ha sorprendido que te funcionase. así que he buscado información sobre isNaN y resulta que fuerza la conversión del parámetro a número. por lo tanto el ejemplo que puse anteriormente no es correcto

Cita:
console.log(isNaN(1)); // false
console.log(isNaN('1')); // false --> esto es lo que estás recibiendo
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 21/08/2014, 07:43
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Problema con IsNaN en función

Sería cuestión de ver cómo estabas utilizando dicha función. Si estás recogiendo el valor de un input (que es siempre string) no te valdría solo con isFinite, aunque parece que sí por lo que comentas...
  #8 (permalink)  
Antiguo 21/08/2014, 08:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con IsNaN en función

Cita:
Iniciado por PHPeros Ver Mensaje
Si estás recogiendo el valor de un input (que es siempre string) no te valdría solo con isFinite...
No confundas a la función isFinite con el método Number.isFinite. La segunda es más estricta que la primera.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 21/08/2014, 09:38
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Problema con IsNaN en función

Cita:
Iniciado por Alexis88 Ver Mensaje
No confundas a la función isFinite con el método Number.isFinite. La segunda es más estricta que la primera.

Saludos
A eso me refiero. Al ser la segunda más estricta, ésta no acepta valores numéricos en forma de string, por lo tanto primero habría que hacer la conversión "manual" a number y después pasarlo por dicha función.

Eso en el caso de que el valor se recogiera de un input.
  #10 (permalink)  
Antiguo 21/08/2014, 09:44
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con IsNaN en función

Ah bueno, creí que quería validar que el dato fuera numérico, porque si fuera así, con isNaN no bastaría. Nada que un casting no pueda solucionar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, 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:45.