Hallo,
"Lösung: this vermeiden
Eine mögliche Lösung ist, das Object immer explizit über dessen Namen anzusprechen anstatt über this.
this wird dann nur noch in Methoden verwendet, die als Event-Handler dienen. Denn this ist die einzige Möglichkeit, im Internet Explorer auf das Element zuzugreifen, dessen Handler das Ereignis ausgelöst hat. In Browsern, die dem DOM-Events-Standard folgen, gibt es dafür die Eigenschaft currentTarget des Event-Objektes."
Es ist vielleicht nicht so sinnig, Objektmethoden direkt an Eventhandler zu knüpfen?
Diese Erwiderung verstehe ich nicht. Meinst du, man sollte Objektmethoden nicht als Event-Handler verwenden? Wieso?
Nun ja, dann ist das Objekt wohl eher ein Namespace für eine Methodensammlung, die mit Eventhandlern verknüpft werden. Ich dachte halt, wenn "this" da zu Verwirrungen führt ist es vielleicht "falsch", dort mit "this" auf das Objekt zu verweisen, obwohl doch schon klar ist, dass das Objekt nur als Funktionsträger für Events fungiert. Aber vermutlich, wenn du das so schreibst, wird das so nicht praktiziert.
" // Fehler: this verweist auf das Element, dem der Event-Handler anhängt"
Das ist aus meiner Sicht kein Fehler, sondern logisch.
»Fehler« bezieht sich hier darauf, dass der Code nicht das erwartete tut.
Naja, das kommt drauf an, wer was erwarten. Paul fragt Martin: "wer ist meines Vaters Sohn und doch nicht mein Bruder?" Martin weiß es nicht. Paul: "na ich!". Martin geht zu Sonja und sagt: "Du kennst Du schon den: wer ist meines Vaters Sohn und doch nicht mein Bruder?". Sonja: "na Du!". Martin: "nee, Paul". "Ich" (also this) bezieht sich doch immer auf den, der es ausspricht. Wenn ich einem Eventhandler (deshalb sagte ich ja oben auch, das wäre "falsch") eine Methode eines anderen Objektes anhänge, dann ist "ich" natürlich und auch logischerweise und erwarteter Weise "ich"/this. Nur im Kontext des Codes geht es unter oder wird falsch interpretiert, weil nicht klar ist Verwirrung herrscht, wem der Code nun zugeordnet wird, welchem Objekt.
Logisch ist es natürlich, dass jeder Event-Handler im Kontext des Elements ausgeführt wird – wobei man das für Event-Handling längst nicht braucht, siehe oben.
Ich dachte IE braucht das? Wieder was nicht verstanden, vielleicht doch schon zu spät heute ...;
Gruß
jobo