con-f-use
Erfahrenes Mitglied
Hallo zusammen,
ich bin ziemlich neu, was JavaScript angeht - komme eigentlich von PHP, also stiefelt mich nicht gleich für das, was ich jetzt schreibe, okay
Habe gerade ein paar Fingerübungen gemacht um mich einfach besser in JavaScript zurechtzufinden und bin dabei auf ein Problem gestoßen, dass ich mir nicht erlären kann.
Ein ganz einfaches Uhren-Script:
--------------------------------------------------------------------------
function clock(){
var today = new Date();
var h = today.getHours(),
m = today.getMinutes(),
s = today.getSeconds();
// Die ganzen Variablen initialisiert
if (h<10) h = "0"+ h;
if (m<10) m = "0"+ m;
if (s<10) s = "0"+ s;
//Dafür gesorgt, dass sie das richtige Format haben 13:1:5 Uhr sieht dumm aus - besser mit 0 vor den einstelligen Zahlen
var time = h +":"+ m +":"+ s +" Uhr";
//Der String der ausgegeben werden soll
document.write(time);
//Die Ausgabe
setTimeout("clock()", 1000);
//Die Verzögerung vor der nächsten Aktualisierung
} //clock()
--------------------------------------------------------------------------
Wenn ich jetzt die funktion clock() in einem <script>-Bereich irgentwo im <body>-Tag aufrufe
z.B. so:
--------------------------------------------------------------------------
<h3>
Uhrentest
<script language="JavaScript"> // Script-Bereich dahin wo die Uhrzeit hin soll
clock();
</script>
</h3>
--------------------------------------------------------------------------
müsste ja eigentlich alle 1000ms (=Timeout-Wert) ein neuer Schriftzug mit der aktuellen Uhrzeit neben dem alten erscheinen - ist mir schon klar, dass irgentwan 9999 Uhrzeiten auf dem Bildschirm stehen müssten, aber das ist mir gerade ziemlich wurscht. Was mir sehr seltsam vorkommt und mich eingentlich interessiert - jetzt kommt die endlich die Frage - ist, dass beim ersten Mal die Uhrzeit richtig neben dem Schriftzug "Uhrentest" angezeigt wird, sich aber beim zweiten Mal ein neues Dokument öffnet, in dem nur die aktuallisierten Uhrzeit steht und sonst nichts womit sich das Script aufhängt.
Ist das ne seltsame eigentart von document.write(), kann mir das jemand erklären? Warum wird das bitte beim ersten Mal ins bestehende Dokument geschrieben ohne, dass sich was anderes an der Anzeige ändert und beim ersten Wiederaufruf der Funktion "clock()" dann alles im Anzeigefenster gelöscht und nur die Uhrzeit reingeschrieben? Macht für mich keinen Sinn.
Vielen Dank für jede Antwort
- con-f-use
ich bin ziemlich neu, was JavaScript angeht - komme eigentlich von PHP, also stiefelt mich nicht gleich für das, was ich jetzt schreibe, okay
Habe gerade ein paar Fingerübungen gemacht um mich einfach besser in JavaScript zurechtzufinden und bin dabei auf ein Problem gestoßen, dass ich mir nicht erlären kann.
Ein ganz einfaches Uhren-Script:
--------------------------------------------------------------------------
function clock(){
var today = new Date();
var h = today.getHours(),
m = today.getMinutes(),
s = today.getSeconds();
// Die ganzen Variablen initialisiert
if (h<10) h = "0"+ h;
if (m<10) m = "0"+ m;
if (s<10) s = "0"+ s;
//Dafür gesorgt, dass sie das richtige Format haben 13:1:5 Uhr sieht dumm aus - besser mit 0 vor den einstelligen Zahlen
var time = h +":"+ m +":"+ s +" Uhr";
//Der String der ausgegeben werden soll
document.write(time);
//Die Ausgabe
setTimeout("clock()", 1000);
//Die Verzögerung vor der nächsten Aktualisierung
} //clock()
--------------------------------------------------------------------------
Wenn ich jetzt die funktion clock() in einem <script>-Bereich irgentwo im <body>-Tag aufrufe
z.B. so:
--------------------------------------------------------------------------
<h3>
Uhrentest
<script language="JavaScript"> // Script-Bereich dahin wo die Uhrzeit hin soll
clock();
</script>
</h3>
--------------------------------------------------------------------------
müsste ja eigentlich alle 1000ms (=Timeout-Wert) ein neuer Schriftzug mit der aktuellen Uhrzeit neben dem alten erscheinen - ist mir schon klar, dass irgentwan 9999 Uhrzeiten auf dem Bildschirm stehen müssten, aber das ist mir gerade ziemlich wurscht. Was mir sehr seltsam vorkommt und mich eingentlich interessiert - jetzt kommt die endlich die Frage - ist, dass beim ersten Mal die Uhrzeit richtig neben dem Schriftzug "Uhrentest" angezeigt wird, sich aber beim zweiten Mal ein neues Dokument öffnet, in dem nur die aktuallisierten Uhrzeit steht und sonst nichts womit sich das Script aufhängt.
Ist das ne seltsame eigentart von document.write(), kann mir das jemand erklären? Warum wird das bitte beim ersten Mal ins bestehende Dokument geschrieben ohne, dass sich was anderes an der Anzeige ändert und beim ersten Wiederaufruf der Funktion "clock()" dann alles im Anzeigefenster gelöscht und nur die Uhrzeit reingeschrieben? Macht für mich keinen Sinn.
Vielen Dank für jede Antwort
- con-f-use
Zuletzt bearbeitet: