setTimeout Problem

js-mueller

Erfahrenes Mitglied
Hi

ich verwende im moment die Funktion setTimeout um etwas jede sekunde auszuführen, doch gibt es ein Problem. Wenn die Timeout Zeit vorbei ist wird nurnoch die ausgabe der funktuion angezeigt. Der Rest der HTML Seite ist verschwunden. Sagen wir mal in der funktuion steht documnet.write("test").
Und in der hatml datei steht nen test wie ich ihn hier gerade schreibe, dann steht nach dem timeout nurnoch "test" auf dem Bildschirm. Woran kann das liegen?
ODer funktioniert setTimeout so, wenn ja gibt es da noch eine andere lösung?
 
Du hast dir die Frage schon selbst beantwortet:
Das Problem liegt in der function document.write. Woher soll diese function wissen, wo du schreiben willst? Sie weis es eben nicht. Normaler weise würde document.write() den Text am Ende der Datei einfügen, doch die HTML-Datei ist schon geschlossen. Daher wird ein neues Dokument geöffnet und dort der Text eingefügt.
Das ist ein Typisches Anfängerproblem in Javascript... Hatte ich auch...;)
 
sowas in der Art:

Code:
<div id="textAenderDich"></div> <!-- Das Tag kommt an die stelle, wo der Text erscheinen soll -->
<script>
var x = 0;
setTimeout('document.getElementById("textAenderDich").innerHTML="Durchlauf Nr."+ (++x)',1000);
</script>

Wie immer bei mir: Ungetestet!
 
Wie kann man es anstellen das es jede sek aufgerufen wird?
Im moment ist es so das es nach einer sekunde einmal aufgerufen wird und dann nie wieder.
 
Eine Funktion definieren, die sich per setTimeout selbst aufruft:
PHP:
function changeText( a_iNum )
{
    window.document.getElementById("oTextToChange").innerHTML
        = "Durchlauf " + a_iNum;
    a_iNum++;
    setTimeout( "changeText( " + a_iNum + " );", 1000);
}

Und diese dann anschliesen in das onLoad-Event des Body packen:
PHP:
<body onLoad="changeText(1);">

Schau dir dazu auch mal die setInterval und clearInterval Methoden an, sind in dem Fall wohl etwas besser, bzw. logischer.
 
Kürzer:
Code:
<div id="textAenderDich"></div> <!-- Das Tag kommt an die stelle, wo der Text erscheinen soll -->
<script>
var x = 0;
setInterval('document.getElementById("textAenderDich").innerHTML="Durchlauf Nr."+ (++x)',1000);
</script>
 

Neue Beiträge

Zurück