molily: setAttribut

Beitrag lesen

Hallo,

Ja, aber
<button onClick="alert('Wasweißich')">
                ^^^^^^^^^^^^^^^^^^^^^
[geht] doch auch.

Nein, das ist ein Attribut des button-Elements und das muss in Anführungszeichen eingeschlossen werden. Aber wenn du den onclick-Handler rein in JavaScript registrierst, musst du die Funktion angeben und zwar nicht als String. (Warum das so ist, sprengt mein Verständnis von den "Innereien" von JavaScript, könnte man sicherlich auch beides implementieren.)

Vielleicht zur Ergänzung:

Prinzipiell kann man durchaus

element.setAttribute("onclick", "func('param')");

schreiben.

(Das ist, wie Ashura dargelegt hat, etwas ganz anderes als: element.onclick = func("param");)

Das sollte jeder standardkonforme Browser verstehen: Man setzt ganz einfach über das DOM ein Attribut namens onclick. Als ob es im HTML-Code schon drinstünde.

Die Kurzschreibweise element.onclick = "func('param')"; ist hingegen in DOM 2 HTML nicht vorgesehen, weil man dort von DOM Events zum Registrieren von Event-Handlern ausgeht.)

Das Problem ist, dass eben nicht alle Browser standardkonform sind - wenn ich es recht in der Erinnerung habe, versteht IE als einziger Browser das nicht.

Der IE will die klassische Methode zum Registrieren von Event-Handlern, die Netscape mal erfunden hat, als es das W3C-DOM noch längst nicht gab, nämlich gemäß dem Schema:

element.onevent = func;

Wenn man also Parameter übergeben will, wie man es mit einem onclick-Attribut machen kann, dann nimmt man die ebenfalls angesprochene Methode: »Über die Kapselung in anonymen Funktionen können Parameter übergeben werden.«

Das heißt dann z.B.

element.onclick = function () {  
   func("param");  
};

Mathias