[résolu] Figer la valeur paramètre quand passé à une fonction

Figer la valeur paramètre quand passé à une fonction [résolu] - Javascript/Node.js - Programmation

Marsh Posté le 14-03-2019 à 16:19:59    

Bonjour,
Désolé si mon titre est pas très clair. En gros, dans une page HTML, j'ai une légende avec 6 items et je veux que lorsque je clique sur l'un des items, ça m'affiche un alert(...), le contenu de cet alert étant un nombre allant de 1 à 6.
J'avais fait ça :

Code :
  1. var objMapLegend = document.getElementById('MapLegendList');
  2. var ArrayMapLegendList = objMapLegend.getElementsByTagName('li');
  3. for(var i = 0; i < ArrayMapLegendList.length; i++) {
  4.    ArrayMapLegendList[i].addEventListener("click", function() { LegendFilterClick(i); });
  5. }
  6. function LegendFilterClick(num) {
  7.    aler(num);
  8. }


J'aurais voulu que pour l'item 0, le alert affiche la valeur de la variable i au moment où j'ai instancié la fonction et son paramètre (donc la valeur 0). Pour l'item 1, que ça affiche 1, ...
Là, ça m'affiche toujours 6 ce qui est logique vu ce que j'ai écrit. Mais j'arrive pas à trouver la syntaxe pour que le paramètre num de ma fonction conserve la valeur de i au moment de la création du listener :/
J'ai la méthode bourrin où je mets :

Code :
  1. ArrayMapLegendList[0].addEventListener("click", function() { LegendFilterClick(1); });
  2. ArrayMapLegendList[1].addEventListener("click", function() { LegendFilterClick(2); });
  3. ArrayMapLegendList[2].addEventListener("click", function() { LegendFilterClick(3); });
  4. ArrayMapLegendList[3].addEventListener("click", function() { LegendFilterClick(4); });
  5. ArrayMapLegendList[4].addEventListener("click", function() { LegendFilterClick(5); });
  6. ArrayMapLegendList[5].addEventListener("click", function() { LegendFilterClick(6); });


Mais c'est pas propre :/
 
Une idée, svp ? Merci.


Message édité par rufo le 14-03-2019 à 18:04:30

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 14-03-2019 à 16:19:59   

Reply

Marsh Posté le 14-03-2019 à 17:20:37    

Utilise la déclaration "let" de ta variable i et cela résoudra le problème.
Sinon, si tu passes l'évènement en paramètre tu dois pouvoir retrouver l'index de ton élément je pense.


Message édité par MaybeEijOrNot le 14-03-2019 à 17:21:18

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 14-03-2019 à 18:03:44    

Ca marche avec let, merci :)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed