Heim > Artikel > Web-Frontend > Warum funktioniert mein JavaScript „removeEventListener“ nicht?
Warum funktioniert der RemoveEventListener von Javascript nicht?
Beim Versuch, einen Ereignis-Listener zu entfernen, können Benutzer auf Schwierigkeiten stoßen, was zu der Frage führt, ob Es gibt ein Problem mit ihrer Umsetzung. Um dieses Problem auszuräumen, analysieren wir den bereitgestellten Code.
Im gegebenen Beispiel wird ein Ereignis-Listener an ein Element namens „area“ für das Klickereignis angehängt. Beim späteren Versuch, den Listener in einer anderen Funktion zu entfernen, schlägt die Entfernung jedoch fehl.
Der Grund für diesen Fehler liegt in der Tatsache, dass die beiden anonymen Funktionen, die an „addEventListener“ und „removeEventListener“ übergeben werden, unterschiedliche Funktionen sind. Obwohl beide das Click-Ereignis im Bereich verarbeiten, handelt es sich nicht um dasselbe Funktionsobjekt. Folglich funktioniert das Entfernen des Ereignis-Listeners mit derselben anonymen Funktionsreferenz aus addEventListener nicht.
Um dieses Problem zu beheben, ist es notwendig, für das Hinzufügen und Entfernen des Ereignis-Listeners dieselbe anonyme Funktionsreferenz zu verwenden. Dadurch wird sichergestellt, dass die Funktion removeEventListener den spezifischen Listener, der zuvor hinzugefügt wurde, korrekt ansprechen und entfernen kann.
Hier ist ein Beispiel für einen korrigierten Codeausschnitt:
<code class="javascript">function foo(event) { app.addSpot(event.clientX,event.clientY); app.addFlag = 1; } area.addEventListener('click',foo,true); area.removeEventListener('click',foo,true);</code>
Durch die Verwendung einer benannten Funktion wie „foo“ für den Ereignishandler kann auf dasselbe Funktionsobjekt sowohl zum Hinzufügen als auch zum Entfernen des Ereignis-Listeners verwiesen werden, wodurch sichergestellt wird, dass der Listener bei Bedarf korrekt entfernt wird.
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein JavaScript „removeEventListener“ nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!