Kontakt Home Grundlagen Scripts zum Kopieren Beispiele
JavaScript

Zeitdauer anzeigen

Diese Seite ist offen seit:

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...



ein projekt von hfl --> goto:www.liesong.de