comment vérifier si un élément a un écouteur d'événement dessus, si j'utilise une fonction inline dessus comme le code ci-dessous. parce que j’ai une fonction qui rappelle la fonction et ajoute l’auditeur d’événements, mais elle entraîne l’écoute d’écouteurs d’événements en double, ce qui lui permet de déclencher une fonction deux fois. Alors, comment puis-je le vérifier pour l'empêcher d'ajouter un écouteur d'événements s'il existe déjà. Merci! :RÉ
for (var a = 0;a<formFieldInput.length;a++) {
if(formFieldInput[a].hasAttribute("name") && formFieldInput[a].attributes.title.value !== "Valid Until") {
formFieldInput[a].addEventListener("click",function(event) {
toggleFieldList(event,"show");
});
}
Il n'y a pas de fonction JavaScript pour y parvenir. Toutefois, vous pouvez définir une valeur booléenne sur true
lorsque vous ajoutez l'écouteur et sur false
lorsque vous le supprimez. Vérifiez ensuite ce booléen avant d’ajouter potentiellement un écouteur d’événements en double.
Doublage possible: Comment vérifier si un écouteur d'événements attaché dynamiquement existe ou non?
De nos jours (2016) dans la console ChromeDev Tools, vous pouvez exécuter rapidement cette fonction ci-dessous pour afficher tous les écouteurs d'événement associés à un élément.
getEventListeners(document.querySelector('your-element-selector'));
Tu n'as pas besoin de. Il suffit de le coller autant de fois que vous le souhaitez et autant de fois que vous le souhaitez. MDN explique les écouteurs d'événements identiques :
Si plusieurs EventListeners identiques sont inscrits sur le même EventTarget avec les mêmes paramètres, les instances en double sont ignorées. Ils ne font pas appeler EventListener deux fois et il n'est pas nécessaire de les supprimer manuellement avec la méthode
removeEventListener
.