Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1443 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Reprendre la bonne valeur dans une fonction anonyme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Reprendre la bonne valeur dans une fonction anonyme

n°1825588
dwogsi
Défaillance cérébrale...
Posté le 11-12-2008 à 15:55:22  profilanswer
 

Bonjour,
j'utilise Mootools,
voici la partie de mon code Javascript qui me pose problème :

Code :
  1. var self = this;
  2. for( var i = 0 ; i < this.itemList.length ; i++ )
  3. {
  4.   var aEl = new Element('a',{href:'#'});
  5.   aEl.addEvent('mouseenter',function () {
  6.     self.showItem(i);
  7.   })
  8.   aEl.set('text',i+1);
  9.   aEl.inject(this.linkLine);
  10. }


En fait, le i dans ma fonction anonyme correspond toujours à la valeur maximale qu'il atteint dans le for.
Donc la dernière. C'est certainement le comportement normal, cela-dit, je voudrais que ma fonction anonyme prenne la valeur de i au moment de son ajout pour l'événement.

 

Mais je ne vois pas bien comment faire...
Si vous avez une solution, n'hésitez pas! :jap:


Message édité par dwogsi le 11-12-2008 à 16:03:02

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 11-12-2008 à 15:55:22  profilanswer
 

n°1825593
FlorentG
Unité de Masse
Posté le 11-12-2008 à 16:07:29  profilanswer
 

closure closure closure :

Code :
  1. aEl.addEvent('mouseenter', function() {
  2.   var localI = i;
  3.   return function() {
  4.     self.showItem(localI);
  5. }
  6. }());

n°1825607
dwogsi
Défaillance cérébrale...
Posté le 11-12-2008 à 16:24:50  profilanswer
 

Je note.
Merci, ça fonctionne à merveille. :jap:


Message édité par dwogsi le 11-12-2008 à 16:25:41

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1825611
FlorentG
Unité de Masse
Posté le 11-12-2008 à 16:29:54  profilanswer
 

C'est super-utile ouais. Genre pour des setTimeout pour y refiler des variables

n°1825620
masklinn
í dag viðrar vel til loftárása
Posté le 11-12-2008 à 16:37:36  profilanswer
 

FlorentG a écrit :

closure closure closure :

Code :
  1. aEl.addEvent('mouseenter', function() {
  2.   var localI = i;
  3.   return function() {
  4.     self.showItem(localI);
  5. }
  6. }());



Ou bien

Code :
  1. aEl.addEvent('mouseenter', function (i) {
  2.    return function () {
  3.        self.showItem(i);
  4.    }
  5. }(i));

Message cité 2 fois
Message édité par masklinn le 11-12-2008 à 16:38:42

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1825622
dwogsi
Défaillance cérébrale...
Posté le 11-12-2008 à 16:37:46  profilanswer
 

FlorentG a écrit :

C'est super-utile ouais. Genre pour des setTimeout pour y refiler des variables


C'est pas faux, encore que sur ce point la j'ai pas eu de problème étant donné que mootools permet de faire l'équivalent avec en plus la possibilité de rappeler une méthode avec son objet correspondant.


Message édité par dwogsi le 11-12-2008 à 16:38:13

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1825625
FlorentG
Unité de Masse
Posté le 11-12-2008 à 16:39:37  profilanswer
 

masklinn a écrit :

Ou bien

Code :
  1. aEl.addEvent('mouseenter', function (i) {
  2.    return function () {
  3.        self.showItem(i);
  4.    }
  5. }(i));



Ouais, ça a une meilleure gueule :jap:

n°1825667
dwogsi
Défaillance cérébrale...
Posté le 11-12-2008 à 17:33:07  profilanswer
 

masklinn a écrit :


Ou bien

Code :
  1. aEl.addEvent('mouseenter', function (i) {
  2.    return function () {
  3.        self.showItem(i);
  4.    }
  5. }(i));



Plus clair en effet, et adopté du coup.
Merci :)


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Reprendre la bonne valeur dans une fonction anonyme

 

Sujets relatifs
Fonction javascript qui compte le nombre d'occurence d'une sous-chaine[eclipse] Plug-in pour une fonction search plus rapide ?
[PERL] Passer un tableau en paramètre d'une fonctionrecalculer valeur ou calculer et stocker dans variable?
Recuperer valeur inputbox.[resolu]n'arrive pas a supprimer la bonne ligne de ma bdd
Evaluer une expression puis passer la valeur dans une variableFonction reconnaissance touche ?
calibration d'une fonction à partir d'une ODE [scilab]Reprendre un site des pages jaunes ... ?
Plus de sujets relatifs à : Reprendre la bonne valeur dans une fonction anonyme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR