molily: Parameterübergabe

Beitrag lesen

Hallo,

var vParameter = window["dynamischErzeugteVariable"][j];
  document.getElementById("div"+j).onclick = function() {fTest(vParameter);};

Es kommt aber immer "9", also der hier letzte erzeugte Div.

Du erzeugst in einer Schleife immer neue Funktionsobjekte. In den Funktionen greifst du auf die lokalen Variablen der äußeren Funktion zu. Das geht nur, weil verschachtelte Funktionen Closures bilden.

All diese Funktionen verweisen auf diesen Variablen. Und zu dem Zeitpunkt, zu dem sie ausgeführt werden, ist die äußere Funktion schon längst beendet worden. Aber die Variablen bleiben erhalten, weil es noch viele Funktionen gibt, die darauf Zugriff haben. Und der letzte Wert von vParameter ist nunmal der höchste Wert, den j in der Schleife zugewiesen bekommen hat.

Zur weiteren Lektüre: </archiv/2007/6/t153514/#m998966>

Wenn du im Click-Handler auf bestimmte Daten Zugriff haben willst, dann kannst du diese z.B. am Element-Objekt selbst als Eigenschaften speichern.
elementobjekt.eigenschaft = wert;
Im Event-Handler dann über this.eigenschaft auslesen.

Mathias