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); }