Zeitdauer anzeigen
Wie geht das?
Folgendes Script kommt in den Kopf der Seite:
|
<SCRIPT LANGUAGE="JavaScript">
var anfangszeit=new Date();
var startzeit=anfangszeit.getTime();
function uhr()
{
var Differenz;
var AktuellesmyForm=new Date();
var minuten=0;
Differenz= (AktuellesmyForm.getTime() -startzeit)/1000;
Differenz=Math.round (Differenz);
if (Differenz>59)
{
minuten=Math.round ((Differenz-30)/60);
sec=Differenz-(minuten*60);
}
else
{
sec=Differenz;
}
window.document.myForm.zeit.value=minuten + " min "
+ sec + "sec";
window.setTimeout ('uhr()',1000);
}
</SCRIPT>
|
Und dieses Formular kommt dann dahin, wo du es
brauchen kannst:
|
<FORM NAME="myForm">
Diese Seite ist offen seit:
<INPUT SIZE=12 NAME="zeit">
</form>
|
Erklärung zum Script:
|
<SCRIPT LANGUAGE="JavaScript">
var anfangszeit=new Date();
var startzeit=anfangszeit.getTime();
|
Scriptanfang,
Definition der Variablen:
New Date() und getTime(): Liefert die Anzahl Millisekunden
als Zahl zurück, die seit dem 1. Januar 1970, 0:00:00,
bis zu dem in "anfangszeit" gespeicherten Zeitpunkt
vergangen sind.
|
function uhr()
{
var AktuellesmyForm=new Date();
var minuten=0;
|
Jetzt wird die Funktion namens "uhr" definiert:
Variable "Differenz" wird festgelegt und die Variable
"AktuellesmyForm" (wieso hab ich die Variable denn
so unmöglich genannt?) ist wieder das aktuelle Datum.
"minuten" werden erst einmal auf 0 gesetzt.
|
var Differenz;
Differenz= (AktuellesmyForm.getTime() -startzeit)/1000;
|
Nun wird erklärt, was "Differenz" machen soll:
"Differenz" ist das Ergebnis von "AktuellesmyForm"
- dem zweiten Datum, was wir festlegen ließen minus
der Startzeit und durch 1000 (wegen der Millisekunden).
|
Differenz=Math.round (Differenz);
|
Nun werden die Sekunden noch gerundet (das gibt sonst unmögliche
Werte!) - Math.round liefert die kaufmännische Ganzzahl
zurück.
|
if (Differenz>59)
{
minuten=Math.round ((Differenz-30)/60);
sec=Differenz-(minuten*60);
}
else
{
sec=Differenz;
}
|
Ist das Ergebnis größer als 59 (Sekunden!) müssen
wir natürlich die Minute hochrechnen und die Sekunden
wieder bei Null anfangen lassen - das passiert hier.
|
window.document.myForm.zeit.value=minuten +
" min " + sec + "sec";
|
Und schlußendlich wird dieses Ergebnis dann in das
Formularfeld eingetragen: mit window.document.myForm.zeit.value
kann der Wert des Feldes "zeit" im Formular "myForm"
im aktuellen Dokument des Fensters direkt angesteuert werden.
|
window.setTimeout ('uhr()',1000);
}
</SCRIPT>
|
Damit das Feld dann jedesmal mit aktuellem Wert aktualisiert
wird, wird mit setTimeout gearbeitet: Die Funktion "uhr()"
(erster Wert) wird nach 1000 Millisekunden (zweiter Wert)
erneut ausgeführt, ganz praktisch das Ding.
Danach hört nur noch der Scriptbereich auf...
|