LX: Mehrere Javascript Counter

Beitrag lesen

var zielDatum=new Date(n.getYear(),n.getMonth(),n.getDay(),n.getHours(),n.getMinutes(),n.getSeconds());

Das geht einfacher: new Date(n);

// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
  if(startDatum<zielDatum)  { (...)

Auch das geht einfacher:

var diffms = Math.max(0, zielDatum - startDatum),
    stunden = Math.floor(diffms/3600000),
    minuten = Math.floor((diffms/60000)%60),
    sekunden = Math.floor((diffms/1000)%60);

print(stunden+':'+minuten+':'+sekunden);

Dieses Statement ist mir in JS neu. Wahrscheinlich willst Du lieber die innerHTML-Eigenschaft des Timers (bzw. später der Timer) mit dem entsprechenden Inhalt füllen.

setTimeout('countdown()',200);

So oft ist das gar nicht nötig. Ein Mal pro Sekunde reicht, allerdings sollte dieses Mal mit dem Sekundenwechsel synchronisiert werden, d.h. Du startest das Script mit einem Timeout, der n ms wartet für n = 990 - (new Date()*1)%1000, also

// Wir können das auch gerne nachher noch objektorientiert kapseln, aber jetzt nehmen wir erst mal eine einfache Funktion:

function syncTimer() {
   if (window.timerInterval) { window.clearInterval(timerInterval); }
   window.setTimeout(runTimer, (990 - (new Date()*1)%1000));
}

Du solltest das Script sicherheitshalber alle 60 Minuten (3600 Sekunden) neu mit dem Sekundenwechsel synchronisieren.

Gruß, LX

--
RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.