Maison >interface Web >js tutoriel >Comment transmettre la valeur de variable correcte à une fonction lors de l'utilisation d'écouteurs d'événements dans des boucles ?
Comment transmettre la valeur d'une variable JS à une fonction
Lors de l'itération dans les tableaux et de l'ajout d'écouteurs d'événements à chaque élément, la valeur de la boucle La variable compteur peut ne pas être conservée comme prévu. Au lieu de capturer la valeur actuelle, l'écouteur utilise la valeur finale une fois la boucle terminée. Pour résoudre ce problème et transmettre la valeur réelle (et non la référence) à la fonction, envisagez les approches suivantes :
Navigateurs modernes :
Utilisez les mots-clés let ou const pour déclarer des variables de portée bloc :
<code class="javascript">for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i)); }</code>
Anciens navigateurs :
Créez une portée distincte pour préserver la valeur de la variable en la passant en tant que paramètre à une fonction imbriquée :
<code class="javascript">for (var i = 0; i < results.length; i++) { (function (i) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); })(i); }</code>
En utilisant une fonction anonyme et en passant la variable comme argument, vous transmettez effectivement sa valeur à la fonction et créez une fermeture. Cela garantit que chaque auditeur a accès à la valeur correcte au moment de la création.
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!