wahsaga: ist das "unobstrusive"?

Beitrag lesen

hi,

element.onclick = function () { tuwas("a1"); };
Ist es übrigens richtig, das hier dem Prototypen element

element soll wohl für dieses Beispiel kein Prototyp sein, sondern allgemein für die Referenz auf ein HTML-Element, mit dem du etwas machen möchtest, stehen.
element ist also ein Javascript-Objekt.

Wenn du dir beispielsweise die Referenz auf ein HTML-Element mittels getElementById besorgst, dann erhältst du ein Javascript-Objekt, welches dieses HTML-Element aus Sicht von Javascript repräsentiert.

eine öffentliche Funktion onclick hinzugefügt wird

Nein, es wird einer Eigenschaft dieses Objektes ein Wert zugewiesen.

(Die dann automatisch vom Browser aufgerufen wird)?

In diesem speziellen Fall ja.
onclick ist als Eventhandler definiert, wenn das Ereignis Klick auf dieses Element stattfindet, wird geschaut ob dafür ein Handler definiert ist, und wenn ja versucht diesen anzuwenden.

Du hättest aber auch einer Eigenschaft element.xyz einen Wert zuweisen können - diese sstellt keinen definierten Event dar, also passiert nichts vergleichbares. Nur hat dein Javascript-Objekt jetzt eine weitere Eigenschaft.

Wenn ja, existierte vorher keine onclick-Funktion oder wurde sie überschrieben ?!

Die Elementeigenschaft (auf Attribut des Objektes genannt) onclick existierte bereits vorher, weil es sich bei deinem Javascript-Objekt um die Repräsentation eines HTML-Elementes handelt - und die haben (idR.) ein onclick-Attribut.
Ob sie aber bereits einen Wert hatte, danach wurde nicht geschaut. Wenn sie bereits einen hatte, dann ist dieser jetzt überschrieben worden.

Und wo ist auf einmal das eventobjekt hin, das wie ich dachte, als Parameter mit übergeben wird ??

Da du den Event dynamisch ans Objekt gebunden hast, brauchst du das Objekt nicht mehr als Parameter übergeben - es steht dir unter dem reservierten Bezeichner this innerhalb der Handlerfunktion zur Verfügung.

function WertVonXyz() {
  alert(this.xyz);
}
element.xyz = "Wert des Attributes xyz";
element.onclick = WertVonXyz;

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }