IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[addEventListener]Passer des param�tres a la fonction a �x�cuter


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par d�faut [addEventListener]Passer des param�tres a la fonction a �x�cuter
    Salut !

    Un petit soucis pour passer un param�tre.

    En gros, j'ai une boucle for qui fait d�filer un certain nombre d'�l�ments auquel je souhaite attacher un �v�nement. Seulement, j'ai besoin de passer la valeur de l'index courant � la fonction � attacher.

    Le code source donne ceci pour l'instant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    for(var index=0;index<6;index++){
    	tabs.add(document.getElementById('tab'+index)).addEventListener('click', evtFct=function(){tabs.select(index).bind(tabs)}, false);
    }
    Avec cette technique, tabs.select re�oit bien l'index. Le soucis, c'est qu'au moment de d�clench� l'�v�nement, index a la derni�re valeur qui lui a �t� attribu� (donc 6, ce qui est parfaitement logique et normal).

    Sachant que je peux pas passer directement de param�tre a la fonction que j'attache a l'�v�nement, comment passer indirectement la valeur de l'index a select() au moment o� ce dernier est attach� ?

    Je pr�f�rerais �viter de cr�er sp�cialement un membre selectindex a mon objet tabs.

    Je sais pas si je suis tr�s clair

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2006
    Messages
    1 355
    D�tails du profil
    Informations personnelles :
    �ge : 52
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 1 355
    Par d�faut
    En fait j ai pas bien compris ce que tu veux ,

    mais j avais ete confronte a des problemes d evenements il y a quelques temps et je m etais depatouille avec ce lien :

    http://www.quirksmode.org/js/events_order.html

    Si tu peux expliquer un peu mieux stp

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par d�faut
    Pour simplifier l'�criture a l'extr�me, je voudrais faire �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    for(var index=0;index<6;index++){
    	tabs.item[index].addEventListener('click', tabs.select(index), false);
    }
    Sauf que ce cas l� renvoi une erreur vu qu'on peut pas directement passer d'argument a une fonction qu'on attache a un �v�nement.

    Pour contrer cette limitation, j'utilise habituellement cette syntaxe :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    .addEventListener('click', evtFct=function(){tabs.select(index)}, false);
    Cette m�thode fonctionne, tabs.select re�oit bien index.

    Sauf que dans mon cas, la valeur de index change a chaque it�ration de la boucle. Donc quand evtFct est ex�cut�, index a la derni�re valeur qui lui a �t� attribu� par la boucle, soit 6, et non la valeur qu'il avait au moment o� j'ai attach� la fonction � l'�v�nement (respectivement 0, 1, 2, 3, 4, 5).
    Hors ce qui m'int�resse, c'est ce deuxi�me cas.

    C'est moins obscure ?

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par d�faut
    A priori, mon explication est toujours aussi obscure. Mais je sais pas vraiment comment �tre plus clair

  5. #5
    Membre Expert Avatar de willoi
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2006
    Messages
    1 355
    D�tails du profil
    Informations personnelles :
    �ge : 52
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 1 355
    Par d�faut
    apparament c est resolu avec cet instructiion :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    objet.setAttribute('OnClick', 'mafonction('+variable+')');

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par d�faut
    C'est un pi�ge. Cette solution a un gros d�faut, elle �crase les autres �v�nements pos� sur la balise

    (question bonus, y a pas d'acc�s au prototype sur les objets DOM ?)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Passer des param�tres dans la fonction Fancybox
    Par nicolas2603 dans le forum jQuery
    R�ponses: 0
    Dernier message: 09/10/2011, 16h00
  2. R�ponses: 2
    Dernier message: 28/04/2008, 20h04
  3. R�ponses: 2
    Dernier message: 21/07/2007, 01h12
  4. R�ponses: 3
    Dernier message: 16/05/2007, 10h03
  5. R�ponses: 5
    Dernier message: 16/11/2006, 07h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo