1UnitedPower: Mehrdimensionales Array verhält sich fraglich

Beitrag lesen

Hakuna matata!

Firebug meldet: (Zeile bei setTimeout) TypeError: wert[i] is undefined.
Der "ALERT 1" zeigt alle werte komplett und korrekt an.
Der "ALERT 2" wird nicht erreicht.

Das Problem ist, dass die Variable i dem Zeitpunkt, zu dem die verzögerte Funktion "funktion" ausgeführt wird, nicht mehr den Wert des aktuellen Schleifendurchlaufs hat, sondern genau gleich wert.length ist. In unserer Doku findest du etwas zu den Hintergründen und auch gleich ein paar Lösungsvorschläge.

Mein Vorschlag wäre, die Funktion an die Parameter zu binden, also:

for(var i = 0; i < wert.lenght; i++) {  
   setTimeout(funktion.bind(window,wert[i]['wert1'], wert[i]['wert2'], wert[i]['wert3']), 30);  
}

Vielleicht kennt jemand von euch dieses Problem und kann mir helfen.

Ziemlich sicher, darauf stößt jeder JavaScript-Entwickler irgendwann ;)

--
“All right, then, I'll go to hell.” – Huck Finn