Hallo, ich hab da mal eine Frage. Ich bastle gerade mal wieder an einer Seite und hatte bisher immer DOM-Elementen mittelst setAttribute ein "onclick"-Event gegeben.
Die letzten Tage bin ich darauf gestoßen, dass ich DOM-Elemente direkt eine Funktion geben kann. Das sieht dann quasi so aus:
varinheritInstance = this;
p.onclick = function {
inheritInstance.select.apply( inheritInstance, [position] );
}
Was ich mir davon versprochen habe?! Tja, ich hab mir gedacht wenn ich das Attribut setzte, muss der Inhalt noch geparst werden, was bei der Methode mit dem Setzten der Funktion wegfallen müsste?! [erste Frage]
Ein anderer Vorteil ist das ich so immer schön innerhalb der Instanzen meiner Objekte bleibe und so keine IDs im Code benötige und getElementByID(...) aufrufen muss.
Nachteil dieser Methode ist aber das die Werte der Variablen sich etwas seltsam verhalten. Angenommen ich hab den obigen Code in einer for Schleife mit 50 Durchläufen, dann ist "position" (Zählvariable) für jede Funktion 50. Dies kann man umgehen wenn man das setzten von onclick in eine separate Funktion auslagert.
Anscheint wird irgendwie die Variable ewig im Speicher gehalten und die anonyme Funktion hat nur eine Referenz auf diese Variable mit natürlich veränderten Wert.
Nun zur Frage: Was sollte ich bevorzugen setAttribute('onclick','...') oder element.onclick = function () {}; ?