Javascript "diese" Referenz für onclick Ereignis funktioniert nicht

8

Ich versuche eine Funktion mit dem "onclick" -Ereignis wie folgt aufzurufen:

%Vor%

In der Funktion selbst beziehe ich mich auf "das":

%Vor%

Wenn ich die ganze Sache renne, sagt die Warnung "undefined". Wenn ich alert(this) versuche, bekomme ich [Objektfenster]. Ich arbeite mit IE9, BTW. Danke

    
Tomcatom 10.10.2012, 13:38
quelle

4 Antworten

8

Beim Aufruf einer Funktion von einem Event-Handler wird dessen this nicht vom Handler gesetzt (obwohl Sie this aus dem Handler per Xdazz-Antwort übergeben oder this pro Kyle-Antwort setzen können). Ein anderer Ansatz besteht darin, das Senderelement aus dem Ereignisobjekt zu extrahieren, das dem Ereignis zugeordnet ist:

%Vor%

Sie müssen das Ereignis auch explizit übergeben:

%Vor%

Beachten Sie, dass, wenn die Tabellenzelle verschachtelte Elemente hat, sie der "Sender" sind, um das gewünschte Element (das ist die Tabellenzelle) zu erreichen, die Sie nach oben durchlaufen müssen. Um all diese Kopfschmerzen zu vermeiden, siehe unten, wie man die Handler über Code anfügt .

Live-Testfall .

Das heißt, es wäre besser, das Klickereignis über Code statt über Inline zu binden - mischen Sie nicht HTML mit JavaScript. Um dies zu erreichen, haben Sie einen solchen Code:

%Vor%

Wenn der obige Code vorhanden ist, können Sie die inline onclick= -Aufrufe aus dem HTML-Code entfernen und Ihre ursprüngliche Funktion beibehalten - der this verweist auf die angeklickte Tabellenzelle.

Aktualisierte Geige .

    
Shadow Wizard 10.10.2012, 13:44
quelle
12

this ist das Objekt window in Ihrem Code.

Sie könnten this als Parameter übergeben.

%Vor%

dann:

%Vor%     
xdazz 10.10.2012 13:41
quelle
3
%Vor%

Jetzt verweist this auf das Element td in Ihrer Funktion move .

    
Kyle 10.10.2012 13:43
quelle
0

Verwenden Sie stattdessen das Ereignisziel, um das gewünschte dom-Element zu erhalten:

%Vor%     
Karl Rosaen 10.10.2012 13:42
quelle

Tags und Links