bueno se que no debo ser yo el que te muestre los siguientes errores (que creo yo que lo son )ya que fui el que abrió este tema solicitando ayuda y va parecer que voy de listo pero no es asi es que simplemente me gusta ayudar y a los que me ayudan pues mas
tu código funciona pero hay un par de cosillas mientras lo probaba que no me cuadraban en sintaxis por ejemplo
intervalo = setTimeout("crono(), 1000");
a mi parecer si quieres que se ejecute el código cada segundo seria así
intervalo = setTimeout("crono()", 1000);
que diferencia hay que la primera aun que no de error estas ejecutando a cada milisegundo la función crono, sin pausa y la segunda hace esperar 1 segundo antes de que se ejecute;
en este caso retrasas la fecha un mes
mes = <?php echo date('n', $fecha)-1;?>
y aqui sumas un minuto
minutos = <?php echo date('i', $fecha)+1;?>
supongo que es el minuto de espera .
en este caso
Código:
serv_ahora.getFullYear(<?php date('Y', $fecha);?>);
serv_ahora.getMonth(<?php echo date('n', $fecha);?>);
serv_ahora.getDate(<?php echo date('d', $fecha);?>);
serv_ahora.getHours(<?php echo date('H', $fecha);?>);
serv_ahora.getMinutes(<?php echo date('i', $fecha);?>);
si que me sorprendió ya que todas las funciones que empiezan por get son para solicitar valores no para darles por lo que su sintaxis seria
Código:
serv_ahora.setFullYear(<?php echo date('Y');?>);
serv_ahora.setMonth(<?php echo date('n');?>);
serv_ahora.setDate(<?php echo date('d');?>);
serv_ahora.setHours(<?php echo date('H');?>);
serv_ahora.setMinutes(<?php echo date('i');?>);
probando tu código seria asi
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="application/xhtml; charset=utf-8" />
<title></title>
<style type="text/css">
#calContador {width:450px;}
#calFondoEnunciado {background-color:#6B8E23;color:#FFFFFF;font-family:Arial;font-size:12px;border: 1px solid #C9C9C9;border-width: 1px 1px 0px 1px;text-align:center;}
#calCuerpo td{background-color:#6B8E23;color:#FFFFFF;font-family:Arial;font-size:11px;font-weight:bold;text-align:center;}
#calCuerpo td.cont{background-color:#FFFF00;color:#000000;width:50px;}
</style>
<?php
$fecha = time();
$fecha = strtotime('2012-3-18 14:20:00');
?>
<script type="text/javascript">
var intervalo=null;
function crono(){
var dia = <?php echo date('d', $fecha);?>, mes = <?php echo date('n', $fecha);?>, anio = <?php echo date('Y', $fecha);?>, hora = <?php echo date('H', $fecha);?>, minutos = <?php echo date('i', $fecha);?>;
var fechaFinal = new Date(anio,mes,dia,hora,minutos);
var serv_ahora = new Date();
serv_ahora.setFullYear(<?php echo date('Y');?>);
serv_ahora.setMonth(<?php echo date('n');?>);
serv_ahora.setDate(<?php echo date('d');?>);
serv_ahora.setHours(<?php echo date('H');?>);
serv_ahora.setMinutes(<?php echo date('i');?>);
diferencia = fechaFinal.getTime() - serv_ahora.getTime()
segundostotales = parseInt(diferencia /1000);
minutostotales = parseInt(segundostotales/60);
horastotales = parseInt(minutostotales/60);
dias = parseInt(horastotales/24);
horas = parseInt(horastotales % 24);
minutos = parseInt(minutostotales % 60);
segundos = parseInt(segundostotales % 60);
falta = '<div id="calContador"><div id="calFondoEnunciado">Tiempo que Falta hasta el ' + dia + '/' + parseInt(mes+1) + '/' + anio + ' ' + hora + ':' + minutos + '</div><div id="calCuerpo"><table style="table-layout:fixed;" bgcolor="#C9C9C9" border="0px" cellspacing="1px" cellspadding="0px" width="450px"><tr>';
if(dias < 10) {dias = '0' + dias;}
if(horas < 10) {horas = '0' + horas;}
if(minutos < 10) {minutos = '0' + minutos;}
if(segundos < 10) {segundos = '0' + segundos;}
diasTxt = '<td class="cont">' + dias + '</td><td>Días</td>';
horasTxt = '<td class="cont">' + horas + '</td><td>Horas</td>';
minutosTxt = '<td class="cont">' + minutos + '</td><td>Minutos</td>';
segundosTxt = '<td class="cont">' + segundos + '</td><td>Segundos</td></tr></table></div></div>';
if (diferencia <= 999) {
contadorCompleto = falta + '<td class="cont">Se ha cumplido el tiempo</td></tr></table></div></div>';
if(intervalo)
clearTimeout(intervalo);
}
else
{
contadorCompleto = falta + diasTxt + horasTxt + minutosTxt + segundosTxt
intervalo = setTimeout("crono()", 1000);
}
document.getElementById('contador_regresivo').innerHTML = contadorCompleto;
}
window.onload=function(){crono();};
</script>
</head>
<body>
<div id="contador_regresivo" style="text-align:center"></div>
</body>
</html>
con esto nos evitaríamos fallos entre fechas
Como ya he dicho antes tu código me ayudo muchísimo si el no abría terminado pero como he visto estas cosillas pues he pensado que en algún momento te podría estar fallando y no te estés dando cuenta, como bien dices los códigos con fines didácticos estas correcciones me parecen importantes, por si a otro le hace falta
Muchas gracias un abraso