Les gestionnaires d'événements Javascript peuvent être efficacement attribués à plusieurs éléments à l'aide d'une boucle. Cependant, un défi surgit lorsque l'on tente d'attribuer des événements de clic uniques à une série d'éléments générés dynamiquement, car la boucle semble attribuer l'événement uniquement au dernier élément.
La racine du problème réside dans la fermeture créée par la boucle for. Tous les gestionnaires partagent la même variable i, qui est incrémentée à chaque itération. Lorsque tous les gestionnaires sont exécutés, la variable i, au moment de l'exécution, contient la valeur du dernier élément de la boucle, ce qui fait que tous les gestionnaires n'affichent que la dernière valeur.
Pour surmonter ce problème, transmettez l'itérateur de boucle i en tant que paramètre à une fonction distincte qui crée le gestionnaire d'événements pour chaque élément. Ce faisant, chaque gestionnaire obtient sa propre copie de l'itérateur, évitant ainsi le problème de fermeture. Voici un exemple :
function handleElement(i) { document.getElementById("b" + i).onclick = function () { alert(i); }; } // Create event handlers for each element for (i = 1; i < 11; i++) { handleElement(i); }
Dans cette solution, la fonction handleElement encapsule la création du gestionnaire d'événements, garantissant que chaque gestionnaire a sa propre portée fermée avec une valeur unique de i.
La technique ci-dessus vous permet d'attribuer des gestionnaires d'événements uniques à plusieurs éléments générés via une boucle. En comprenant le concept de fermetures et en tirant parti de la fonctionnalité de transmission de paramètres en Javascript, vous pouvez gérer efficacement les événements sur les composants générés dynamiquement.
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!