Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2009, 09:54
Avatar de neandertal
neandertal
 
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 17 años, 1 mes
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);
}