Maison > interface Web > js tutoriel > le corps du texte

Pourquoi mon JavaScript RemoveEventListener() ne fonctionne-t-il pas ?

Susan Sarandon
Libérer: 2024-11-02 14:42:30
original
591 Les gens l'ont consulté

Why is my JavaScript removeEventListener() not working?

Javascript RemoveEventListener ne fonctionne pas

Dans ce code, un écouteur d'événement est ajouté à un élément à l'aide de la méthode addEventListener() :

area.addEventListener('click',function(event) ...,true);
Copier après la connexion
Copier après la connexion

Plus tard, dans une autre fonction, l'écouteur d'événement est tenté d'être supprimé à l'aide de la méthode removeEventListener() :

area.removeEventListener('click',function(event) ...,true);
Copier après la connexion
Copier après la connexion

Cependant, l'écouteur d'événement n'est pas supprimé. Pourquoi cela se produit-il ?

Le problème :
Le problème réside dans le fait que les deux fonctions anonymes passées en arguments aux méthodes addEventListener() et removeEventListener() sont deux différentes fonctions. Lorsque l'écouteur d'événement est ajouté avec le code suivant :

area.addEventListener('click',function(event) ...,true);
Copier après la connexion
Copier après la connexion

Le runtime crée un nouvel objet fonction anonyme unique et l'assigne au gestionnaire d'événement click de l'élément de zone.

Quand l'écouteur d'événement est supprimé avec le code suivant :

area.removeEventListener('click',function(event) ...,true);
Copier après la connexion
Copier après la connexion

Un différent nouvel objet de fonction anonyme unique est créé et attribué au gestionnaire d'événements de clic de l'élément de zone. La première fonction n'est pas supprimée, elle continue donc à gérer l'événement click.

Solution :
Pour supprimer correctement l'écouteur d'événement, il est nécessaire de fournir la méthode removeEventListener() avec une référence au même objet fonction qui a été transmis à la méthode addEventListener(). Pour ce faire, l'écouteur d'événements doit être défini comme une fonction nommée, puis la fonction nommée doit être utilisée comme argument aux méthodes addEventListener() et removeEventListener(). Par exemple :

function foo(event) {
  app.addSpot(event.clientX,event.clientY);
  app.addFlag = 1;
}
area.addEventListener('click',foo,true);
area.removeEventListener('click',foo,true);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!