[JS] AddeventListener avec paramètres

Résolu/Fermé
StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 - 12 oct. 2005 à 17:26
 cob - 11 déc. 2007 à 16:25
Salut à tous,

Ayant beaucoup d'éléments qui répondront à des évènements assez peu différents :
<img src="img1.jpg" name="image" onclick="mafonction('valeur1');">
<img src="img2.jpg" name="image" onclick="mafonction('valeur2');">

Je pensais faire un script d'initialisation qui boucle sur toutes les images en question (jusqu'ici, pas de problème), et qui leur affecte l'evenement onclick :
Images = document.getElementsByName('image');
for(var i=0;i<Images.length;i++){  // on parcourt toutes les images
  Images[i].addEventListener('click','mafonction',true);  // on affecte le onclick
}

Mais impossible de passer un paramètre à ma fonction : "uncaught exception : null"
ce qui est d'autant plus frustrant : un "try... catch" ne fonctionnera pas ici je pense !
Quelqu'un aurait-il la solution ou un pti truc pour faire passer un paramètre à ma fonction lors de ma boucle ? Le paramètre serait i.

5 réponses

Salut,

Tu as testé :
addEventListener(elt, function(){ foo(bar); }, false);
Au lieu de :
addEventListener(elt, foo(bar), false);
11
TLa Messages postés 57 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 14 février 2009 12
12 nov. 2005 à 20:44
Salut,

il y a une solution la dedans : http://thierry.larmoire.free.fr/jeux/demineur/
voir la fonction Smiley()

dans ton cas :

Images = document.getElementsByName('image');
for(var i=0;i<Images.length;i++){ // on parcourt toutes les images
Images[i].index=i; // on rajoute un champ index a l'image
Images[i].onclick=function(e) {
// le this pour cette methode, est l'image cliquée
return mafonction(this.index);
}
}

a+
2
StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
15 nov. 2005 à 17:06
Merci, mais j'ai trouvé en fait :
objet.setAttribute('OnClick', 'mafonction('+variable+')');

Thierry, il est super sympa ton démineur, mais le bouton droit sous Firefox pose des soucis je pense...
Va voir ce topic :
http://www.commentcamarche.net/forum/affich-1906554-%5BJS%5D-Clique-droit-sous-FF
;-)
edit : ah... sous IE aussi ?!?
2
TLa Messages postés 57 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 14 février 2009 12
16 nov. 2005 à 00:37
en faite j'ai laissé tomber le traditionnel right-click pour un ctrl-click
par-ce que j'utilise une extension firefox (allinone gesture*) qui gère d'une façon inhabituel le menu contextuel. Toutes les methodes que j'ai vues sur le net ne marchent pas.

* c'est une super extension qui permet d'associer des traits tracés à la souris à des actions (history-back history-forw new-tab new-window...)
https://addons.mozilla.org/extensions/moreinfo.php?id=12
0
Salut à tous,

Je reprends cette discussion, car je suis tombé dessus ayant eu besoin de faire l'équivalent d'un addEventListener mais avec paramètres.
La solution qui consiste à utiliser setAttribute, fonctionne trés bien sous Firefox, mais pas du tout sur IE7...
Seul moyen faire à l'ancienne méthode.. elt.onclick = function (){ };

Si vous avez d'autres éléments..


JS
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
essaye plutot "'mafonction'" sans les guillemets.

Si tu veux passer un parametre à ta fonction, c'est impossible, mais...

Tu peut utiliser le concept objet de DOM/javascript:
tu donnes à l'objet auquel t'essaye d'attacher l'evenement une paire parametre/valeur,
puis tu utilise dans ta fonction
this.[parametre]
-1