Problm mit document.write()

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
 
Zuletzt bearbeitet:
wenn du write() nach dem laden des Dokumentes benutzt, wird der komplette Dokumenteninhalt durch das zu schreibende ersetzt.

Um nach dem Laden eines Dokumentes Text zu ändern, ändere die Eigenschaft "innerHTML" eines beliebigen Elements oder verwende Formularfelder, deren value-Eigenschaft du änderst.
 
Ah-ha, das war alles, was ich wissen wollte und mehr - das mit dem innerHTML wusste ich schon, wollte nur wissen warum es mit write() nicht klappt.
DANKE!
 
Zurück