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 et le passage de variable


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut addEventListener et le passage de variable
    Bonjour tout le monde !

    Je vous explique mon problème, je rajoute des événements JavaScript sur certains éléments html grâce a addEventListener, pour le moment aucun probleme mais ca ne va pas durer
    En effet, j'aimerai passer des arguments a une fonction mais pas seulement, je penses qu'un exemple vaut mieux que des paroles:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function addevent(objet) {
    for(var i = 0; i <= 2; i++){
    $(objet.id[i]).addEventListener('click', function (event) { objet.nom_de_la_fonction_a_executer[i](objet.arguments_fonction[i]); }, false);
    }
    }

    Voila a peu prêt a quoi ressemble mon code.
    Problème, c'est que firebug me dis: objet.nom_de_la_fonction_a_executer n'est pas une fonction...
    Connaissez-vous la façon de remédier a cette erreur ?
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(objet.id[i]).addEventListener('click', function (event) { window[objet.nom_de_la_fonction_a_executer[i]](objet.arguments_fonction[i]); }, false);

  3. #3
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Bonjour !

    Merci pour votre réponse cela semble fonctionner !

    Mais voila qu'un autre bug arrive...

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(objet.id[i]).addEventListener('click', function (event) { window[objet.nom_de_la_fonction_a_executer[i]](objet.arguments_fonction[i]); }, false);

    Dans ce code il se trouve que pour tester, j'ai défini le nom_de_la_fonction_a_executer comme étant une alert, pour l'instant tout marche sauf qu'il m'indique que les arguments sont "[objet Object]", en effet, les arguments a récupérer sont dans un objet mais j'ai vérifier le chemin d'accès et il est correct savez-vous d'où peu provenir l'erreur ? Merci d'avance

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(objet.id[i]).addEventListener('click',window[objet.nom_de_la_fonction_a_executer[i]](objet.arguments_fonction[i], false);

  5. #5
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Merci pour ton aide mais maintenant firebug me dis que "window[objet.nom_de_la_fonction_a_executer[i]]" is not a function...

    Apparemment on dois absolument passer par une fonction intermédiaire afin d'exécuter la fonction mais après il ne connais plus les arguments a passer...

    Y aurait-il donc un moyen de "capturé" les arguments ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    tu veux dire que objet.arguments_fonction[i] et une collection ou un array ??

    soit tu modifies la fonction pour recupérer les arguments dans ton objet ou array dans la fonction, soit tu fais un éval bien crade...

  7. #7
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    objet.arguments_fonction[i] est un objet

    Ouais j'aimerais bien éviter les eval tout crade :s

    ce que ça fais c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fonction_contenu_dans_un_objet_a_executer(arguments_contenu_dans_un_objet_donné_comme_arguments);
    Vous voyez ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    récupère dans la fonction

  9. #9
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Il me retourne [object Mousevent] et je n'arrive pas a accéder aux informations que je transmet malgré tout les tests que j'ai effectué je n'y arrive pas.

    Voila une des choses que j'ai essayé :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(id).addEventListener(evenement, function (event) { window[fonction(arguments[0])]; }, false);

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    nooooooooooooooon

    le arguments[0] c'est dans la fonction objet.nom_de_la_fonction_a_executer[i] que tu dois le recupérer ...

  11. #11
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Donc si j'ai bien compris ca donne un truc comme ca:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(id).addEventListener(evenement, function (event) { window[objet.fonction[i](objet.arguments[i])]; }, false);

    et dans ma fonction je récupère arguments comme cela: (en supposant que la fonction soit a())

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function a(objet){
    var a = objet[0];
    }

    C'est ca ? (désolé je décroche un peu la après avoir vu soit que des [object Object] soit que des undefined presque toute la journée X_X)

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    attention aux crochets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(id).addEventListener(evenement, function (event) { window[objet.fonction[i]](objet.arguments[i]); }, false);
    et si objet.argumants[i] contient a , alors dans la focntion a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function a(){
    alert(arguments[0][0])
    }

  13. #13
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Ah d'accord mais a ce moment la on retrouvel'erreur précédente, quand on a:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(id).addEventListener(evenement, function (event) { window[objet.fonction[i]](objet.arguments[i]); }, false);

    firebug dis que "window[objet.fonction[i]] is not a function" alors que cette fonctio existe belle et bien

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    tu as quoi dans window[objet.fonction[i] un string ou une fonction ?

  15. #15
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    J'ai le nom d'une fonction qui est contenu dans un objet:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    objet = {
    "fonction" : {
    0 : alert, // le nom de la fonction a exécuter
    1 : (...)
    },
    "arguments" : {
    0 : { "a" : "aaa", "b" : "bbb" }, // l'objet a lui donner comme arguments
    1 : (...)
    }
    }

    J'ai donc directement le nom de la fonction a exécuter

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    tu as une fonction et pas un string ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    objet = {
    "fonction" : {
    0 : alert, // le nom de la fonction a exécuter
    1 : bar
    },
    "argts" : {
    0 : { "a" : "aaa", "b" : "bbb" }, // l'objet a lui donner comme arguments
    1 : {gb:"bonjour",fr:"salut"}
    }
    }
     
     
    function bar(lang){
    alert(lang.fr)
    }
     
    objet.fonction[0](objet.argts[0]['a'])
     
    objet.fonction[1](objet.argts[1])

  17. #17
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Cette fois firebug me renvoi une erreur comme quoi alert() n'a pas d'arguments et donc renvoi une erreur:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: http://localhost/blabla.js :: <TOP_LEVEL> :: line 82" data: no]

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ?? avec quel code ?

  19. #19
    Membre habitué Avatar de the-destroyer
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 204
    Points : 125
    Points
    125
    Par défaut
    Avec ton code

  20. #20
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ????
    je l'ai testé et il fonctionne parfaitement
    tu as fait un copier coller ??

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Passage de variable dans addEventListener
    Par epeedelorage dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/03/2012, 18h32
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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