Foros del Web » Programando para Internet » Javascript »

Otra vez el error NaN

Estas en el tema de Otra vez el error NaN en el foro de Javascript en Foros del Web. Hola, he buscado por aqui pero no hay manera. Tengo este javascript que me dice el numero de noches que hay desde una fecha a ...
  #1 (permalink)  
Antiguo 27/12/2008, 14:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
Otra vez el error NaN

Hola, he buscado por aqui pero no hay manera. Tengo este javascript que me dice el numero de noches que hay desde una fecha a otra, segun las fechas introducidas en un formulario. También debe verificarme si la fecha de entrada es posterior a la de salida.

Lo jodido es que me da error NaN y no se que pasa. Alguna ayuda?


Dejo aquí el código por si alguien le echa un ojo.


<script language="JavaScript">
function nights(){
date2=(document.getElementById('fecha_sal').value) ;
date1=(document.getElementById('fecha_ent').value) ;
document.getElementById('no_nights').value=date2-date1;
}
</script>


<form action="">
<input type="text" name="fecha_ent" id="fecha_ent" readonly="" />
<a href="javascript:showCal('Calendar1')">calendario</a>


<input type="text" name="fecha_sal" id="fecha_sal" onblur="nights()" readonly="" />
<a href="javascript:showCal('Calendar2')">calendario</a>


<td align=right>Numero de noches</td>
<td><input type="text" name="no_nights" id="no_nights" size="10" readonly=""/></td>
</tr>
</form>
  #2 (permalink)  
Antiguo 27/12/2008, 18:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Otra vez el error NaN

Utiliza parseInt (o parseFloat según tus necesidades) para forzar a que los números sean enteros (o flotantes) en la resta:

Código javascript:
Ver original
  1. document.getElementById('no_nights').value = parseInt(date2) - parseInt(date1);


Saludos.
  #3 (permalink)  
Antiguo 27/12/2008, 23:27
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Otra vez el error NaN

Yo diría que si se llaman date1 y date2, serán fechas (27/19/2008) y ni puedes hacer la resta directamente ni creo que se solucione haciendo un parseFloat o parseInt, porque no se va a convertir correctamente.

Lo que tienes que hacer es convertir esas fechas con Date.parse() y luego convertir a días:

Código javascript:
Ver original
  1. (Date.parse(date2) - Date.parse(date1))/86400000

Última edición por venkman; 28/12/2008 a las 03:08
  #4 (permalink)  
Antiguo 28/12/2008, 00:23
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Otra vez el error NaN

Tenés toda la razón venkman, no presté la atención suficiente al contestar.
Miré el código y no la lógica detrás.


Saludos.
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 05:04.