Ereignisse und Event-Listener
Bisher liefen Programme einmal von oben nach unten. Interaktive Seiten warten: Erst wenn etwas passiert, läuft ein bestimmter Teil.
- Ereignis (Event):etwas, das auf der Seite passiert: Klick, Tastendruck, Eingabe, Maus fährt über ein Element.
- click:Mausklick oder Tippen auf ein Element; bei Knöpfen auch Enter.
- dblclick / mouseover:Doppelklick bzw. Maus fährt über das Element.
- keydown / input:Taste gedrückt bzw. Inhalt eines Eingabefelds geändert.
- Event-Listener:ein „Zuhörer“ am Element, der bei einem bestimmten Ereignis eine Funktion startet.
const knopf = document.querySelector("#knopf");
let klicks = 0;
function zaehle() {
klicks = klicks + 1;
knopf.textContent = "Geklickt: " + klicks;
}
knopf.addEventListener("click", zaehle);
Funktion übergeben, nicht aufrufen
In addEventListener("click", zaehle) steht die Funktion ohne Klammern: Der Browser bekommt den Baustein und ruft ihn selbst auf, sobald geklickt wird.
- zaehle:der Name allein übergibt die Funktion — sie läuft bei jedem Klick.
- zaehle():mit Klammern läuft sie sofort einmal beim Laden; übergeben wird ihr Ergebnis, der Knopf bleibt danach stumm.
- Mehrere Listener:jeder
addEventListener-Aufruf hängt einen weiteren Zuhörer an — zweimal angehängt heißt zweimal ausgeführt. - Ereignis-Objekt:der Browser übergibt der Funktion Infos, z. B.
event.keybeikeydown. - EVA im Kleinen:Ereignis → Variable ändern → Anzeige aktualisieren.
Klicke, doppelklicke und fahre mit der Maus über beide Knöpfe (Tastatur: Tab zum Knopf, Enter = Klick, zweimal schnell Enter = Doppelklick, Fokus = Überfahren). Links steht immer das richtige Programm, rechts eine Variante aus dem Balken. Die Zeitleiste legt beide Ereignisfolgen übereinander.
Halte fest: Ein Listener reagiert nur auf sein Ereignis, und die Funktion wird ohne Klammern übergeben — mit Klammern läuft sie einmal beim Laden und nie wieder.
element.addEventListener("ereignis", funktionsname);
Allgemeine Hinweise
Ereignisname in Anführungszeichen
Richtig ist "click" — ohne on davor und kleingeschrieben. "onclick" oder "Click" lösen nie aus, ohne Fehlermeldung.
Mit console.log testen
Schreibe als erste Zeile in die Funktion console.log("geklickt");. Erscheint nichts, hängt der Listener am falschen Element oder am falschen Ereignis.
Knöpfe statt Divs
Für Klickflächen <button> verwenden: Er ist per Tastatur erreichbar und löst click auch mit Enter aus.
