Dieses Beipiel mit Erläuterung stammt aus
Startzeit ermitteln
Beim Einlesen der Datei wird zunächst der aktuelle Zeitpunkt ermittelt. Dieser Zeitpunkt
dient als Startzeit der Anzeige. Mit Jetzt = new Date() wird ein neues
Datumsobjekt mit dem aktuellen Zeitpunkt in der Variablen Jetzt
gespeichert. Mit Jetzt.getTime wird eine absolute Zahl in Millisekunden
ermittelt, die in der Variablen Start gespeichert wird.
Funktion zur Zeitanzeige erstmals
aufrufen
Im einleitenden <body>-Tag steht im Beispiel
der erste Aufruf der Funktion ZeitAnzeigen(), die die Zeit anzeigt und
die Anzeige jede Sekunde aktualisiert. Der erste Aufruf erfolgt nach einer
Sekunde. Dazu wird der Funktionsaufruf in die setTimeout()-
Methode mit einer Verzögerungszeit von 1000 Millisekunden
(1 Sekunde) eingebettet. Im Dateikörper steht dann ein Formular, das
nur aus einem einzigen kleinen Eingabefeld besteht. Dieses Eingabefeld wird
als Ausgabefeld für die Zeitanzeige zweckentfremdet.
Zeit anzeigen und Anzeige laufend aktualisieren
Die Funktion ZeitAnzeigen(), die für die laufende
Zeitanzeige verantwortlich ist, ruft zunächst die Unterfunktion
ZeitBerechnen() auf. Diese Funktion erzeugt bei jedem Aufruf ein neues
Datumsobjekt mit dem aktuellen Zeitpunkt. Das Ergebnis wird in der Variablen
Immernoch gespeichert. Zurückgegeben wird jedoch nicht der
aktuelle Zeitpunkt, sondern die Differenz zwischen dem aktuellen Zeitpunkt und
dem Startzeitpunkt, der beim Einlesen der Datei ermittelt wurde. Der
Rückgabewert erfolgt in Sekunden. Da beim Datumsobjekt intern in
Millisekunden gerechnet wird, wird der Wert durch 1000 geteilt, um Sekunden zu
erhalten. Dabei können jedoch Bruchzahlen zustande kommen. Um eine glatte
Sekundenzahl zu erhalten, wendet die aufrufende Funktion ZeitAnzeigen()
die Methode Math.round() an. Die absolute Anzahl der vergangenen
Sekunden steht dann in der Variablen abSekunden. Von dem darin
gespeicherten Wert werden alle folgenden Werte abgeleitet. Mit
Math.round((absSekunden-30)/60) wird ermittelt, wie viele Minuten die
Sekundenzahl bereits imliziert. Wenn die Sekundenzahl beispielsweise 200 lautet,
sind darin 3 Minuten (180 Sekunden) enthalten. Dieser Wert wird in der Variablen
absMinuten gespeichert. Der Restwert an Sekunden, also bei 200 und 180
etwa der Wert 20, wird mit der Modulo-Division absSekunden % 60 in der
Variablen relSekunden gespeichert. Im Beispiel 200 steht dann also in
absMinuten der Wert 3 und in relSekunden der Wert 20. Um die Anzeige
der Minuten und Sekunden für die Ausgabe ordentlich zu formatieren, werden
Zeichenketten erzeugt, die in den Variablen anzSekunden und anzMinuten
gespeichert werden. Wenn eine Minuten- oder Sekundenzahl einstellig ist, bekommt
sie eine 0 vorangestellt. Mit der Zuweisung an
window.document.Anzeige.Zeit.value wird die ermittelte und formatierte
Zeit anschließend in das Formularfeld geschrieben, das zur Zeitanzeige
dient. Damit die Zeitanzeige weiterläuft, ruft sich die Funktion
ZeitAnzeigen() am Ende mit einer Verzögerungszeit von 1000
Millisekunden selbst wieder auf. Dadurch wird der gesamte Vorgang wiederholt.