Che panico... adesso provo ad improvvisarne uno io e vediamo se mi viene meglio perché da quello ci capisco poco o niente:
Codice:
/**
funzione per settare l'HTML
ID: id dell'elemento da modificare
value: nuovo valore della stringa HTML
*/
function setHTML (ID, value)
{
var element = document.getElementById (ID)
if (element.firstChild)
element.firstChild.nodeValue = value
else
element.innerHTML = value
}
/**
restituisce il conteggio, come array (giorni, ore, minuti, secondi, millisec, segno)
refDate: data e ora di riferimento del conteggio (costruita tramite oggetto Date)
*/
function count (refDate)
{
// data e ora attuale
var now = new Date ()
// variabile di ritorno
var ret = new Array (5)
// diferenza tra le date in millisecondi
var countMS = refDate.valueOf () - now.valueOf ()
// scrive il segno (utile per determinare cosa fare se è passata la data): true se negativo, false in caso contrario
ret[5] = (countMS < 0)
// calcola millisecondi
ret[4] = countMS % 1000
// calcola secondi
countMS = Math.floor (countMS / 1000)
ret[3] = countMS % 60
// calcola minuti
countMS = Math.floor (countMS / 60)
ret[2] = countMS % 60
// calcola ore
countMS = Math.floor (countMS / 60)
ret[1] = countMS % 24
// calcola giorni
ret[0] = Math.floor (countMS / 24)
// restituisce il vettore con i dati
return ret
}
/**
calcola e aggiorna volta per volta i dati
ID: id dell'elemento da modificare
refDate: data di riferimento del conteggio
showN: mostra il conteggio se negativo (true = sì, false = no)
*/
function write (ID, refDate, showN)
{
var data = count (refDate)
if (data[5] && !showN)
{
setHTML (ID, "")
return
}
var str = (data[5] && data[0] == 0 ? "-" : "") + data[0] + "d "
str += data[1] + "h " + data[2] + "' " + data[3] + "\" " + data[4]
setHTML (ID, str)
}
/**
avvia la scrittura della data (metodo di servizio)
nota **1: specifica la data secondo uno dei costruttori di Date
nota **2: specifica se visualizzare il conteggio se negativo (true = sì, false = no)
nota **3: specifica il timeout in millisecondi tra un aggiornamento e l'altro
*/
function start ()
{
write('data',new Date(**1),**2)
setInterval ("write('data',new Date(**1),**2)",**3)
}
questo dovrebbe funzionare (provvederò a testarlo come tutte le cose che "improvviso") se nel testo hai definito un elemento così:
Codice HTML:
<SPAN ID="data"></SPAN>
e se intesti la pagina con questo evento:
Codice HTML:
<BODY onLoad="start()">
Ecco, ci ho messo troppo, ma spero che comunque possa esserti d'aiuto...
EDIT: con qualche piccola modifica, lo script funziona e puoi verificarlo su http://dementialsite.altervista.org/.../countdown.htm
Stammi bene...