Foros del Web » Programando para Internet » Javascript »

Cuenta atrás

Estas en el tema de Cuenta atrás en el foro de Javascript en Foros del Web. He escrito un código que realiza una cuenta atrás del tiempo que falta hasta el 14 de Julio de 2010. Por algúna razón la variable ...
  #1 (permalink)  
Antiguo 17/12/2009, 09:54
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Pregunta Cuenta atrás

He escrito un código que realiza una cuenta atrás del tiempo que falta hasta el 14 de Julio de 2010.

Por algúna razón la variable diferencia tiene siempre el mísmo valor, pero he comprobado la variable actual y es correcta.

El código es el siguiente:
Código:
//Javascript code

var meses,dias,horas,minutos,segundos,milisegundos,actual,destino,diferencia;

function init()
{
	actual= new Date();
	destino = new Date();
	diferencia = new Date();

	actual=actual.getTime();
	destino.getTime(2010,5,14);

	diferencia = destino - actual;		

	meses = Math.floor(diferencia / (1000*3600*24*30));
	dias = Math.floor((diferencia - meses*1000*3600*24*30) / (1000*3600*24));
	horas = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24) / (1000*3600));
	minutos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600) / (1000*60));
	segundos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600 - minutos*1000*60) / (1000));
	milisegundos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600 - minutos*1000*60 - segundos*1000));	
	
	document.getElementById("meses").innerHTML=meses + " meses";
	document.getElementById("dias").innerHTML=dias + " dias";
	document.getElementById("horas").innerHTML=horas + " horas";
	document.getElementById("minutos").innerHTML=minutos + " minutos";
	document.getElementById("segundos").innerHTML=segundos + " segundos";
	document.getElementById("milisegundos").innerHTML=milisegundos + " milisegundos";
	
	loop();
}

function loop()
{
	if(milisegundos>9)milisegundos-=100;
	else if(segundos>0){
		milisegundos=1000;
		segundos--;
	}
	else if(minutos>0){
		segundos=59;
		milisegundos=1000;
		minutos--;
	}
	else if(horas>0){
		minutos=59;
		segundos=59;
		milisegundos=1000;
		horas--;
	}
	else if(dias>0){
		milisegundos=1000;
		segundos=59;
		minutos=59;
		horas=24;
		dias--;
	}
	else if(meses>0){
		milisegundos=1000;
		segundos=59;
		minutos=59;
		horas=24;
		dias=29;
		meses--;
	}

	document.getElementById("meses").innerHTML=meses + " meses";
	document.getElementById("dias").innerHTML=dias + " dias";
	document.getElementById("horas").innerHTML=horas + " horas";
	document.getElementById("minutos").innerHTML=minutos + " minutos";
	document.getElementById("segundos").innerHTML=segundos + " segundos";
	document.getElementById("milisegundos").innerHTML=milisegundos + " milisegundos";

	setTimeout("loop()",100);
}
  #2 (permalink)  
Antiguo 17/12/2009, 14:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cuenta atrás

de momento veo algo extraño en esta linea
Código:
	destino.getTime(2010,5,14);
getTime no admite ningun parametro para indicarle la fecha, y lo que es mas importante aun este devuelve el tiempo transcurrido desde la fecha 1ro de enero del 1970. lo que realmente requieres es destino = new Date(2010, 5, 14);
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 17/12/2009 a las 14:27 Razón: error lexico
  #3 (permalink)  
Antiguo 17/12/2009, 14:24
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Cuenta atrás

El problema era ese, que despiste.

Gracias !

Otra duda que tengo es, se puede hecer esto de otra manera mas sencilla ?

Código:
meses = Math.floor(diferencia / (1000*3600*24*30));
	dias = Math.floor((diferencia - meses*1000*3600*24*30) / (1000*3600*24));
	horas = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24) / (1000*3600));
	minutos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600) / (1000*60));
	segundos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600 - minutos*1000*60) / (1000));
	milisegundos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600 - minutos*1000*60 - segundos*1000));

Última edición por neandertal; 17/12/2009 a las 14:29
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 14:33.