pepebe: Ich verstehe setTimeout nicht

Beitrag lesen

Moin, vielleicht möchte mir jemand den Weg weisen...

Ich habe eine Tabelle mit 10x10 Feldern. Jede Zelle hat eine eigene ID vom Typ PosX.Y.

In dieser Tabelle möche ich mit Abstand von 1 Sekunde in einer Reihe von Zellen den Inhalt verändern.

Hierzu habe ich mir folgendes ausgedacht:

Die In Frage kommenden Felder habe ich in einem Array abgelegt.

Ich möchte, daß die folgende Schleife die Funkion Move 10 Mal ausführt und dazwischen jeweils eine Pause von 1 Sekunde einlegt...

--------------------------------
Movement = new Array("Pos1.1",
                     "Pos1.2",
                     "Pos2.2",
                     "Pos2.3",
                     "Pos3.3",
                     "Pos3.4",
                     "Pos3.5",
                     "Pos3.6",
                     "Pos4.6",
                     "Pos5.6",
                     "Pos6.6"
                     );

function Move(t){
document.getElementById(Movement[t]).innerHTML = "x";
}

t=0;
while (t<10){
TT = t*1000;
setTimeout("Move(t)"1000);
t = t + 1;
}
--------------------------
funktioniert nicht. Ich erhalte lediglich den Eintrag in Schritt 10 (Pos 6.6). Die Schritte davor bleiben unbearbeitet.

Wenn ich folgendermaßen komme ich zum selben Ergebnis:

t=0;
setTimeout("Move(t)"1000);
t=1;
setTimeout("Move(t)"1000);
t=2;
setTimeout("Move(t)"1000);
t=3;
setTimeout("Move(t)"1000);

Am Ende sehe ich lediglich t=9.

Wenn ich jedoch folgendes versuche:
t=0;
setTimeout("Move(t)"1000);
t=1;
setTimeout("Move(t)"2000);
t=2;
setTimeout("Move(t)"3000);
...

Komme ich zum Ziel. Die Zeitangabe mit einer Variablen zu ersetzen führt wieder dazu, daß ich augenblicklich (0 Millisekunden später) das Ergebenis von t=9 sehe:

t=0;
while (t<10){
TT = t*1000;
setTimeout("Move(t)",TT);
t = t + 1;
}

Erleuchtet mich, bitte!!!