molily: Ausgabe eines Arrayelements alle 500ms

Beitrag lesen

document.write ist nur in dem kurzen Moment nutzbar, wo das Dokument geladen, geparst wird und alle Scripte ausgeführt werden. Wenn du Timeouts verwendest, brichst du aus dieser Verarbeitung aus und stellt die Ausführung des Scripts hinten an. Dann wird document.write wie gesagt früher oder später aufgerufen, wenn das Dokument bereits fertig geladen ist. Zu dem Zeitpunkt ist document.write unbrauchbar und kontraproduktiv.

Anstatt document.write solltest du einfach das DOM verwenden, um das Dokument zu einem beliebigen Zeitpunkt zu manipulieren. Dazu bietet sich die Erweiterung von http://de.selfhtml.org/javascript/objekte/all.htm#inner_html@title=innerHTML an.

Du suchst also eher etwas wie:

<div id="ausgabe"></div>

<script>
function ausgabe () {
   var zähler = 0;
   var ausgabeElement = document.getElementById("ausgabe");
   var intervallFunktion = function () {
      ausgabeElement.innerHTML += inhalt[i];
      zähler++;
      if (zähler == inhalt.length) {
         window.clearInterval(intervallNummer);
      }
   };
   var intervallNummer = window.setInterval(intervallFunktion, 500);
});
</script>

(Wäre natürlich auch mit setTimeout/clearTimeout zu realisieren, das kommt aufs Gleiche heraus.)

Noch besser wäre, direkt alle HTML-Inhalte ins Dokument zu schreiben, sie anfangs mit JavaScript zu verstecken und dann Element für Element wieder sichtbar zu machen. So ist der Inhalt auf jeden Fall zugänglich auch ohne JavaScript.

Mathias