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 :

[DOM] Valeur d'une variable à la création d'un fonction en DOM


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut [DOM] Valeur d'une variable à la création d'un fonction en DOM
    Bonjour tout le monde,

    je me permes de faire appel à la communauté car j'ai un petit soucis en utilisant DOM et ne parvient pas à le résoudre.

    Un dessin vaut parfois mieux qu'un long discours, alors voici le code suivant (j'explique le soucis après)

    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
    20
    21
    22
    23
    24
    25
    26
     
    var Tableau = new Array();
    Tableau[1] = "Data 1"; Tableau[2] = "Data 2";
     
    var MainUL = document.createElement("UL");
    var MainLI = document.createElement("LI");
     
    var MainLItext = document.createTextNode("Root");
    MainLI.appendChild(MainLItext);
     
    var SecondUL = document.createElement("UL");
     
    for(Cpt = 1; Cpt <= Tableau.length - 1; Cpt++)
      {
        var cLI = document.createElement("IL");
        var cLItext = document.createTextNode(Tableau[Cpt]);
        cLI.appendChild(cLItext);
        cLI.onclick = function() {AfficheID(Cpt);}
     
        SecondUL.appendChild(cLI);
      }
     
      MainLI.appendChild(SecondUL);
      MainUL.appendChild(MainLI);
     
      document.appendChild(MainUL);
    Mon soucis:

    Comme vous pouvez le voir, je parcours un tableau Javascript, et à chaque ligne de ce tableau, je créer un élément de liste et affecte à la méthode "onclick()" une fonction. Mon souhaite, serais de passer en arguement de cette fonction l'ID de Tableau correspondant à l'élément. Au moment de l'execution du script, cet ID est donc représenté par la variable Cpt, le problème, c'est qu'une fois que le script est entièrement exécuté (et donc que je peux effectiver cliquer sur un élement de la liste), l'arguement qui est passé est toujours la dernière valeur qu'aura prit Cpt (en loccurence 2), mais jamais la valeur que Cpt avait au moment de la création de l'élément !

    Comment faire pour que ce soit l'ID de mon élement qui passe en arguement ??? je ne peux bien sur par l'écrire en dur puisque je parcours le tableau pourtant, dès que je met une variable, cette variable étant commune à tous les élements (variable de la boucle de création des éléments) c'est systèmétiquement la dernière valeur de cette variable qui est passer...

    sniff, plus, help...

    merci par avance pour vos idées...

    PS: ceci n'est pas l'intégralité de mon code, je l'ai allégé pour vous montrer le principal et surtout ce qui ne me va pas, aussi si j'ai fais une erreur de frappe ou que le code tel quel ne fonctionne pas exactement, ne vous inquiétez pas, il est là juste pour vous faire comprendre le contexte.

  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 665
    Points
    66 665
    Billets dans le blog
    1

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par SpaceFrog

    LOL

    je suis idiot !

    effectivement, il me suffit d'utilise un this.id, mais par contre, il faut avant que je fasse un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cLI.setAttribut("id",Cpt)
    j'ai tester et ca fonctionne....

    merci, et désolé pour l'idiotie de la chose...

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    heu...oups, désolé, je regarderais mieux avant


    par contre, j'ai un autre soucis (je n'ai pas encore vérifier dans le forum, mais puisque je suis en train de poster...lol)

    avec le script que je vous ai montrer, j'obtient donc une architecture du style:

    <ul>
    <il onclick="mafonction(1)">Main</il>
    <ul>
    <il onclick="mafonction(2)">Data 1</il>
    <il onclick="mafonction(3)">Data 2</il>
    </ul>
    </il>
    </ul>

    et ce qui est étrange, c'est que dans je clic sur "Data 1" ou "Data 2", "mafonction()" est bien appelé avec l'arguement 2 ou 3, mais elle est aussi appeler toute de suite après avec l'arguement 1...

    bref, je vais chercher ca doit s'expliquer assez simplement...c'était juste au cas ou

    merci en tous cas

    bonne prog à tous !

    Aurélien

  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 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    normal car le onclick des li enfant se repercute sur le li parent...
    fais une recherche avec "cancelbubble" pour stopper le propagation de l'évènement onclick du li enfant au li parent

  7. #7
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par SpaceFrog
    normal car le onclick des li enfant se repercute sur le li parent...
    fais une recherche avec "cancelbubble" pour stopper le propagation de l'évènement onclick du li enfant au li parent
    Dis grenouille, dans son code, les lis sont pas imbriqués, si ?

    Edit : bon, on va dire que tu as raison et qu'ils sont imbriqués. Mais c'est pas trop clair

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    jamais vu de balise il encore...

  9. #9
    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 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Heu Denis là si y'a pas imbrication

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul>
    <li onclick="mafonction(1)">Main</li>
    <ul>
    <li onclick="mafonction(2)">Data 1</li>
    <li onclick="mafonction(3)">Data 2</li>
    </ul>
    </li>
    </ul>
    Data 1 et 2 sont bien dasn main non ?


    JT lol je n'avais même pas remarqué ...

  10. #10
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par SpaceFrog
    Heu Denis là si y'a pas imbrication

    Data 1 et 2 sont bien dasn main non ?

    JT lol je n'avais même pas remarqué ...
    Ben non, le il de main, il est fermé. Mais on va dire que c'est une erreur de type, comme les ils, hein JT?

  11. #11
    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 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    arf ça se joue entre ul alors ...
    mais c'est bien un souci de propagation !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. Créations de table selon les valeurs d'une variable
    Par rocsylcanar dans le forum SAS Base
    Réponses: 9
    Dernier message: 27/05/2009, 12h22
  3. Réponses: 2
    Dernier message: 16/08/2005, 09h43
  4. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

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