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

Comment transmettre la valeur de variable correcte à une fonction lors de l'utilisation d'écouteurs d'événements dans des boucles ?

DDD
Libérer: 2024-10-25 08:23:29
original
904 Les gens l'ont consulté

How to Pass the Correct Variable Value to a Function When Using Event Listeners in Loops?

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>
Copier après la connexion

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>
Copier après la connexion

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!

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
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!