1.2k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von simontheprogger Mitglied (719 Punkte)
Hallo,

Ich habe ein kleines Problem mit JavaScript. Ich habe eine "Klasse" erstellt.

function tree()
{
...
}

Darin befinden sich sowohl Objekte als auch Funktionen, die mit

this.draw() = function() { ... }

definiert wurden.
Im Initalscript wird eine neue Instanz der Klasse erstellt:

tree1 = new tree();


Jetzt kann in der Klasse eine Funktion aufgerufen werden, die per

document.getElementById("treediv").innerHTML = "<img src='images/test.png' onclick='[funktion]' />";

ein Bild erzeugt. Allerdings soll bei Klick auf das Bild eine Funktion innerhalb der Instanz dieser Klasse (Beispielweise: tree1.content[2].show();) aufgerufen werden. In der Klasse würde ich einfach
this.content[2].show();
aufrufen, doch das this-Element ist natürlich beim Klick auf das Bild ein anderer. Ich kann aber auch nicht einfach
tree1.content[2].show();
schreiben, da es mehrere Instanzen der Klasse gibt.

Was ich also eigentlich bräuchte wäre eine Möglichkeit, entweder "this" einen eindeutigen Bezeichner geben zu können, sodass ich ungefähr
document.getElementById("treediv").innerHTML = "<img src='images/test.png' onclick='"+this+".content[2].show();' />
einfügen könnte (zur Zeit steht dann da "onclick='[Object object].content[2].show();'") oder dass ich "this" in einen absoluten wert (wie "document.elements.tree1" oder so) umrechnen kann.

Leider tut sich hier Google schwer, da "this" kein besonders seltener Begriff ist.

Ich habe den ganzen Code nochmal hier: paste.pocoo.org/show/569812/

Ich hoffe, ihr könnt mir helfen,
Gruß, Simon

2 Antworten

0 Punkte
Beantwortet von
du suchst Closures, nicht this
0 Punkte
Beantwortet von simontheprogger Mitglied (719 Punkte)
Das klingt sehr gut.

Danke schön! :)
...