HTMLCSSJavaScriptIndexRoadmapImpressum

Event Listener verwalten

Event Listener kannst du nicht nur hinzufügen, sondern auch wieder entfernen. Das ist wichtig, wenn ein Element nicht mehr reagieren soll oder wenn du doppelte Listener vermeiden willst.

Event Listener hinzufügen

Mit addEventListener registrierst du eine Funktion für ein Event. Am besten speicherst du die Funktion in einer Variable oder als benannte Funktion – dann kannst du sie später wieder entfernen.

Listener hinzufügen

1const button = document.getElementById("meinButton");
2
3function handleClick() {
4    console.log("Button wurde geklickt!");
5}
6
7button.addEventListener("click", handleClick);

Output

Bei jedem Klick auf den Button erscheint in der Konsole: Button wurde geklickt!

Event Listener entfernen

Manchmal soll ein Element nicht mehr auf ein Event reagieren – zum Beispiel nach einem abgeschlossenen Schritt oder wenn ein Modal geschlossen wird. Dann entfernst du den Listener wieder.

Hinzufügen und entfernen

1// Listener hinzufügen
2button.addEventListener("click", handleClick);
3
4// später wieder entfernen
5button.removeEventListener("click", handleClick);

Nach dem Entfernen wird die Funktion bei einem neuen Klick nicht mehr ausgeführt.

removeEventListener()

Die Methode removeEventListener() braucht denselben Event-Typ und dieselbe Funktion wie beim Hinzufügen.

removeEventListener()

1const button = document.getElementById("meinButton");
2
3function handleClick() {
4    console.log("Button wurde geklickt!");
5}
6
7button.addEventListener("click", handleClick);
8
9// Listener entfernen – danach reagiert der Button nicht mehr
10button.removeEventListener("click", handleClick);

Output

Vor dem Entfernen: Klick → Button wurde geklickt!

Nach dem Entfernen: Klick → keine Ausgabe mehr.

Warum dieselbe Funktion verwendet werden muss

removeEventListener vergleicht die Funktionsreferenz, nicht den Quellcode. Zwei anonyme Funktionen mit gleichem Inhalt sind für JavaScript zwei verschiedene Funktionen – deshalb schlägt das Entfernen fehl.

Falsch – anonyme Funktionen

1// ❌ funktioniert nicht – zwei verschiedene Funktionen
2button.addEventListener("click", function() {
3    console.log("Klick!");
4});
5
6button.removeEventListener("click", function() {
7    console.log("Klick!");
8});

Richtig – benannte Funktion

1// ✅ funktioniert – dieselbe Funktionsreferenz
2function handleClick() {
3    console.log("Klick!");
4}
5
6button.addEventListener("click", handleClick);
7button.removeEventListener("click", handleClick);

Merke: Speichere den Handler als benannte Funktion, wenn du ihn später entfernen willst. Arrow Functions und anonyme Funktionen eignen sich dafür schlecht.

Event nur einmal ausführen

Manchmal soll ein Listener nur beim ersten Mal reagieren – zum Beispiel bei einem Willkommens-Hinweis oder einem einmaligen Tutorial-Schritt. Du kannst den Listener dann manuell in der Handler-Funktion entfernen.

Manuell nur einmal

1function handleClick() {
2    console.log("Nur einmal!");
3    button.removeEventListener("click", handleClick);
4}
5
6button.addEventListener("click", handleClick);

Output

Erster Klick → Nur einmal!

Weitere Klicks → keine Ausgabe.

Die Option once

Noch einfacher: Mit der Option { once: true } entfernt der Browser den Listener automatisch nach dem ersten Ausführen. Du brauchst dann kein eigenes removeEventListener.

Option once

1button.addEventListener("click", function() {
2    console.log("Nur einmal!");
3}, { once: true });

Output

Erster Klick → Nur einmal!

Weitere Klicks → nichts – der Listener ist bereits entfernt.

Im nächsten Kapitel lernst du: Was sind Dynamische Elemente?