Hallo,
Ich habe das Problem jetzt so gelöst, das ich den Parameter an das DIV als neue Eigenschaft hänge
Ja, übliche und einfache Methode.
Eine andere wären wohl Closures.
Zur Erklärung für Mitlesende: Closures gehen bei Schleifen nicht.
for (var i = 0, element; element = liste[i]; i++) {
element.onclick = function () {
// Closure-Funktion, schließt i, element und liste ein
alert("Element-Nummer: " + i);
};
}
Das würde bei allen Elementen dieselbe Element-Nummer ergeben, nämlich den letzten Wert, den i in der Funktionsausführung hatte.
Allgemein: Eine Closure konserviert nicht den Wert, den eine Variable zu dem Zeitpunkt hat, an dem sie notiert wird. Sie konserviert lediglich den Namen zum Zugriff auf eine bestimmte Speicherstelle.
function func () {
var i;
i = 1;
element1.onclick = function () {
alert(i);
};
i = 2;
element2.onclick = function () {
alert(i);
};
}
Man denkt intuitiv, der Klick auf element1 ergäbe 1, der Klick auf element2 hingegen 2. Ist aber nicht so. Die Funktionsscopes der drei Funktionen sind miteinander verbunden, die Variablen werden nicht zum Zeitpunkt des Notierens der Closure kopiert, sondern es werden Referenzen angelegt. func wird ausgeführt und endet mit der lokalen Variable i mit dem Wert 2. Diese wird im Speicher bewahrt, da noch zwei Funktionen mit diesem Scope verknüpft sind. Wenn diese Funktionen ausgeführt werden, ist in beiden i == 2.
Mathias