reko: Schreibmaschine

Beitrag lesen

Ich möchte eine "Schreibmaschinen"-ausgabe simulieren. Dabei sollen die Zeichen eines gegebenen Strings einzeln in verschiedenen Zeitintervallen ausgegeben werden. Mit window.setInterval() sehe ich keine Möglichkeit, das zu realisieren, da die Intervalle ja, wie schon gesagt, sich ständig ändern sollen. Ich habe nun folgendes Fragment hier, das zwar läuft, aber nicht wie ich will:

function delay(ms)
{ var t=new Date();
  var r=new Date();
  while (r-t<ms) r=new Date();
  return(r-t);}

function typewrite()
{ var text=document.getElementById("eingabe").innerText;
  var out=document.getElementById("ausgabe").innerText;
  var ti;
  var h;
  for (var i=0; i<text.length; i++) {
      ti=Math.floor(Math.random()*800); //max 800ms zwischen zwei Zeichen
      out=out+text.charAt(i);  //kopieren und hinzufügen
      document.getElementById("ausgabe").innerText=out; //ausgeben
      h=0;    //warten
      while (h==0) h=delay(ti);
      //alert(out);
      }
}

Es gibt also zwei Textfelder eines mit id="eingabe" und eines mit id="ausgabe". Die Funktion typewrite() wird mit einem Button gestartet. Die Funktion verhält sich nun so: Scheinbar werden alle Anweisungen richtig ausgeführt, aber der auszugebende Text erscheint nicht zeichenweise in "ausgabe", sondern erst nachdem alle "delay"-Schleifen abgelaufen sind und dann als gesamter Text. Das könnte ich auch kürzer haben! Wenn die Zeile alert(out) nicht auskommentiert ist, geht es aber seltsamerweise. Woran kann das liegen? Hat wer eine Ahnung oder gar eine Lösung für mein Problem?