Rechercher : dans
Par :

[JS] AddeventListener avec paramètres

Dernière réponse le 11 déc 2007 à 16:25:41 StreM, le 12 oct 2005 à 17:26:27 
 Signaler ce message aux modérateurs

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.

Moins le blanc est intelligent, plus le noir lui parait bête

Meilleures réponses pour « [JS] AddeventListener avec paramètres » dans :
Paramètres GPRS VoirSi vous possédez un téléphone mobile fonctionnant sous Windows Mobile (smartphone du type HTC, Qtek, etc.), voici les paramètres GPRS pour les trois principaux opérateurs français Orange Orange GSM Orange GPRS Orange MMS Orange...
Sauvegarde des paramètres de Mozilla Thunderbird VoirSauvegarde manuelle Pour sauvegarder le contenu du carnet d'adresses, les comptes de courrier, les paramètres des comptes ou les extensions installées, il suffit de sauvegarder le dossier suivant :C:\Documents and...
[Mozilla Firefox] Sauvegarder les paramètres VoirSauvegarder / Restaurer les paramètres de Firefox, les marque-pages, historique et les extensions installées Commencez par afficher les fichiers cachés. Sous Vista, il faut s'approprier le dossier C:\users\Utilisateur*\Application Data pour...
Javascript - Les événements VoirQu'appelle-t-on un événement? Les événements sont des actions de l'utilisateur, qui vont pouvoir donner lieu à une interactivité. L'événement par excellence est le clic de souris, car c'est le seul que le HTML gère. Grâce au Javascript il est...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...

1

epsy, le 11 nov 2005 à 15:35:07

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]

Répondre à epsy

2

TLa, le 12 nov 2005 à 20:44:59
  • +1

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+

Répondre à TLa

3

StreM, le 15 nov 2005 à 17:06:19
  • +1

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

Moins le blanc est intelligent, plus le noir lui parait bête

Répondre à StreM

4

TLa, le 16 nov 2005 à 00:37:13

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

Répondre à TLa

5

jies, le 30 nov 2007 à 15:08:28

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

Répondre à jies

6

 cob, le 11 déc 2007 à 16:25:41
  • +2

Salut,

Tu as testé :
addEventListener(elt, function(){ foo(bar); }, false);
Au lieu de :
addEventListener(elt, foo(bar), false);

Répondre à cob