„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum funktioniert „removeEventListener()“ in meinem JavaScript-Code nicht?

Warum funktioniert „removeEventListener()“ in meinem JavaScript-Code nicht?

Veröffentlicht am 12.11.2024
Durchsuche:826

Why Doesn\'t `removeEventListener()` Work in My JavaScript Code?

Problem beim Entfernen von EventListener in JavaScript: Warum „removeEventListener()“ fehlschlägt

In JavaScript ermöglichen Ereignis-Listener Entwicklern die Überwachung von DOM-Elementereignissen wie Klicks, Mausbewegungen und vielem mehr mehr. Während das Anhängen eines Ereignis-Listeners ziemlich einfach ist, kann das Entfernen manchmal eine Herausforderung darstellen.

Der Code

Der Originalcode fügt einen Ereignis-Listener zu einem Element mit dem Namen „area“ hinzu, wenn darauf geklickt wird.

area.addEventListener('click', function(event) {
  app.addSpot(event.clientX, event.clientY);
  app.addFlag = 1;
}, true);

Das Problem

Das Problem tritt auf, wenn versucht wird, den Ereignis-Listener später im Code zu entfernen.

area.removeEventListener('click', function(event) {
  app.addSpot(event.clientX, event.clientY);
  app.addFlag = 1;
}, true);

Der Ereignis-Listener bleibt jedoch angehängt und verhindert so seine Entfernung.

Die Lösung

Der Grund für dieses Problem liegt in der Art und Weise, wie Ereignis-Listener angehängt werden. Jede unterschiedliche Funktionsinstanz erstellt einen separaten Ereignis-Listener. In diesem Fall werden zwei anonyme Funktionen zum Hinzufügen und Entfernen des Listeners verwendet.

Um das Problem zu beheben, stellen Sie sicher, dass die zum Entfernen verwendete Funktionsreferenz mit der zum Hinzufügen des Listeners verwendeten identisch ist.

function handleClickListener(event) {
  app.addSpot(event.clientX, event.clientY);
  app.addFlag = 1;
}

// Add event listener
area.addEventListener('click', handleClickListener, true);

// Remove event listener
area.removeEventListener('click', handleClickListener, true);

Durch die Verwendung derselben Funktionsreferenz für beide Vorgänge kann JavaScript den Ereignis-Listener beim Aufruf korrekt entfernen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3