Hartmut Scheller: for-Schlefen verzögern

Hallo

Ich versuche gerade mit JavaScript einen Schreibmaschinen-Effekt zu basteln, weiß aber nicht wie ich eine Schleife verzögern kann.

Bei folgender Funktion wird mein Array als komplettes Wort ausgegeben, also denke ich, dass ich diese Schleife nur verzögern muß... aber wie?

array = new array("b","l","a");

function bla(array)
{
for (x=0; x < array.length; ++x)

<!-- Hier soll eine kleine Verzögerung rein -->

document.write(text[x]);
}

Ich hab's mit setTimeout versucht, hab's aber nicht geschafft.
Meine Literatur gibt übers Schleifenverzögern auch nicht so viel her, und der gute alte 'delay' Befehl aus TurboPascal-Zeiten funktioniert auch nicht mehr :(

Kann mir jemand helfen?

  1. Hi,

    also wenn du schonmal

    array = new array("b","l","a");

    das array hast, kann eine function eine
    zweite functiona aurrufen, diese die Ausgabe abwickeln
    und dann einen timeout starten welcher wieder die
    erste function ruft.

    Du brauchst dann in einer function den Zähler
    wie in der for-schleife damit es irgendwann
    aufhört, und du musst es auch irgendiwe,
    beim Seitenaufbvau usw., starten.

    Vorher solltest du aber vielleicht nochmal überlegen was mit
    document.write bei schon vorhandener Seite geht oder nicht.
    Ich vermute dass z.B. do with geeignet wäre,
    als modell für das Timing kannst du natürlich erstmal
    statt document.write die statuszeile verändern.

    Grüsse

    Cyx23

  2. Hallo Hartmut!

    Ich versuche gerade mit JavaScript einen Schreibmaschinen-Effekt zu basteln, weiß aber nicht wie ich eine Schleife verzögern kann.

    Hier mal ein Beispiel was deine Frage beantworten sollte:

    <head>
    <script>
    j=0;
    t="Dieser Text wird ganz langsam angezeigt";

    function zeigen()
    {
      if(j<t.length)
        document.forms[0].tttext.value+=t.charAt(j++);
      else
        clearInterval(timer);
    }
    </script>
    </head>
    <body onLoad="setInterval('zeigen();',125);">
    Hier kommt der Text:
    <form>
    <input type=text size=40 name="tttext">
    </form>
    </body>

    ..aber es löst dein Problem nicht: Wenn du den Text richtig im Dokument stehen haben willst, also nicht in einem Formularfeld, dann wird es 'richtiges' DHTML mit allen Schikanen[1].

    Gruss,
     Carsten

    [1] im wahrsten Sinne des Wortes. http://wwwtech.de und http://www.dansteinman.com/dynduo/ führen da weiter, aber mit einem Sonnabend Nachmittag ist es dann nicht mehr getan.

    1. kleine Korrektur:

      <body onLoad="setInterval('zeigen();',125);">

      da fehlt was:

      <body onLoad="timer=setInterval('zeigen();',125);">

      sonst müllt es die Javascript Konsole ganz bös zu :(

      Gruss,
       Carsten