Hallo
Was heisst, es darf nur ein onclick-Attribut geben?
Das heißt, es gibt nur ein Attribut mit dem Bezeichner onclick
, dem man einen Wert zuweisen kann.
Wie kann ich dann mit einem Click zwei Funktionen auslösen?
Wie bereits erwähnt wurde, ist es schlechte Praxis, Event Handler über Attribute in HTML zu registrieren. Macht man es aber doch, ist zu berücksichtigen, dass der als String notierte Wert zum Funktionskörper einer anonymen Funktion geparst wird, das heißt, aus…
<element onclick="handler();"></element>
…wird:
element.onclick = function (event) {
handler();
};
Wolltest du also (was du eigentlich nicht willst) zwei Handlerfunktionen auf diese Art registrieren, dann müsstest du schreiben:
<element onclick="handler1(); handler2();"></element>
Dann wären beide Funktionsaufrufe in der eigentlichen Handlerfunktion gekapselt.
Wie bereits gesagt ist dies aber schlechte Praxis, denn HTML und JavaScript sollten strikt voneinander getrennt werden!
Das bedeutet, Event Handler sollten grundsätzlich in JavaScript registriert werden, was entweder ebenfalls über Eigenschaftszuweisung möglich ist, oder aber – besser – unter Verwendung der Methode addEventListener
, welche den großen Vorteil hat, dass mit ihr beliebig viele Handlerfunktionen für das selbe Element und den selben Eventtyp registriert werden können:
var element = document.getElementById('myElement');
element.addEventListener('click', handler1);
element.addEventListener('click', handler2);
Gruß,
Orlok