Maison >interface Web >js tutoriel >Pourquoi `classname.addEventListener(\'click\', myFunction(), false);` ne fonctionne-t-il pas pour ajouter des écouteurs d'événements aux classes ?
Dans le but de capturer les valeurs des attributs de classe lors des clics, vous avez peut-être rencontré un problème avec votre code JavaScript. Plus précisément, la ligne classname.addEventListener('click', myFunction(), false); ne parvient pas à enregistrer les écouteurs d'événements sur les éléments.
Pour résoudre ce problème, analysons le code étape par étape :
Code corrigé :
Pour résoudre le problème, nous devons attacher correctement les écouteurs d'événement à chaque élément renvoyé par getElementsByClassName . Voici le code corrigé :
var elements = document.getElementsByClassName("classname"); var myFunction = function() { var attribute = this.getAttribute("data-myattribute"); alert(attribute); }; for (var i = 0; i < elements.length; i++) { elements[i].addEventListener('click', myFunction, false); }
Explication de la correction :
Dans ES6, l'ajout de boucles et d'écouteurs d'événements peut être réalisé davantage de manière concise :
Array.from(elements).forEach(function(element) { element.addEventListener('click', myFunction); });
Pour les navigateurs plus anciens, comme IE6-8, pensez à vérifier l'existence de getElementsByClassName avant de l'utiliser.
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!