for (var i = 0; i < 3; i++)
a.onclick = function () { showbox(i); };
Das Problem ist, dass die Variable i und nicht deren aktueller Wert in den Eventhandler-Code eingebaut wird. Die Auswertung des Codes im Eventhandler findet erst beim Aufrufen statt. i ist somit immer 3, so wie es am Ende der for-Schleife hinterlassen wurde. Allerdings fällt mir leider kein eleganterer Weg außer eval() ein, um das Problem zu lösen.
Als ich vor etwas Ähnlichem stand, habe ich das so ähnlich gelöst:
for (var i=0; i<3; i++){
a.onclick=(function(x){return function(){showbox(x);};})(i);}
Keine Verwendung von eval
und die Closures, die einem hier den Streich spielen, werden sinnvoll eingesetzt. ;-)
--
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|