Struppi: nachtraegliche zuweisung an events und mehrere object instanzen

Beitrag lesen

Es geht um folgendes kleines beispiel:
http://www.ilo.de/~ilo02288/test.html

Schau mal in die FAQ wie man verlinkt.

beim laden wird die funktion blabla der ersten instanz des objekts testobject aufgerufen gibt korrekt die instanznummer (index) aus. also 0. der gleiche aufruf wird an onmousedown des bildes gebunden. und dann gibt alert undefined aus. Warum das so ist habe ich mittlerweile einen blassen schimmer. onmousedown wird quasi mit testobject.instances[this.index].blabla ueberschrieben, und das "this" in der funktion blabla bezieht sich danach nicht mehr auf testobject, sondern auf das bild.

Eine Event Zuweisung in der Art:

[Object].onevent = func;

bedeutet dass in der Funktion func() this = [Object] ist.

also bei dir:
document.getElementById("test").onmousedown = testobject.instances[this.index].blabla;
(da würde auch reichen this.blabla)

Das Ergebnis von: document.getElementById("test")

Wie laesst sich das Konzept mit der nachtraeglichen bindung an events retten?

Du musst dem Objekt this irgendwie bekannt machen. entweder du gibst ihm dieses als Eigenschaft mit:
document.getElementById("test").obj = this;
document.getElementById("test").onmousdown = function()
{
alert(this.obj);
}

Oder du verwendest eine Lokale Variabel:
var tmp = this;
document.getElementById("test").onmousdown = function()
{
alert(tmp);
}

Struppi.