Salve a tutti, premetto che non conosco il javascript, ma (purtroppo :P) ho la necessità di creare un countdown in una mia pagina, e quindi mi ci sono dovuto cimentare. I dati vengono presi da un database, fatti gli opportuni calcoli si ricavano le ore rimanenti, i minuti rimanenti e i secondi. Si passano queste variabili ad una funzione che dovrebbe effettuare il countdown. Per ora lasciamo perdere la parte dal database e i relativi calcoli (che ho già pronti), ma passiamo direttamente al countdown. Girando quì e per la rete ho trovato un codice che dovrebbe fare al caso mio:
Codice:
<?php
$remainingHour = 10;
$remainingMinutes = 10;
$remainingSeconds = 10;
?>
<html>
<head>
<script type="text/javascript">
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown ()
{
seconds--;
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
days--;
hours = 23
}
document.getElementById("remain").innerHTML =hours+" hours, "+minutes+" minutes, "+seconds+" seconds";
setTimeout ( "setCountDown()", 1000 );
}
</script>
</head>
<body onload="setCountDown();">
<table>
<tr><td id="remain"><?php echo "$remainingHour hours, $remainingMinutes minutes, $remainingSeconds seconds";?></td></tr>
</table>
</body>
</html>
Insomma, ho delle variabili che contengono i minuti i secondi e le ore rimaste. Le passo ad una funzione js che dovrebbe decrementare ogni secondo (facendo i dovuti controlli). La funzione è ricorsiva, quindi attende un secondo (setTimeOut) e ricomincia a funzionare. La logica mi sembra corretta, ed è per questo che sto impazzendo. Il risultato che ottengo è questo http://mahat.altervista.org/broswer/prova.php, cioè vedo 10:10:10 (che sono i valori che ho imposto provvisoriamente nelle variabili) ma non viene decrementato un bel nulla!
Se qualcuno avesse 5 minuti per correggere quelle poche righe di codice e dirmi dove sbaglio mi farebbe un immenso favore (senza contare che mi eviterebbe un esaurimento).
Attendo fiducioso!