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 :

Itération et récupération de variables


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut Itération et récupération de variables
    Tout d'abord bonjour tout le monde car c'est mon 1er message ici.
    L'intitulé n'est pas forcément très clair et je m'en excuse.

    Mon problème est le suivant, d'abord un exemple de code pour mieux comprendre :

    J'ai un tableau de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data = {
        div1 : "Txt 1",
        div2 : "Txt 2",
        div3 : "Txt 3"
    }
    J'effectue l'itération suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (key in data) {
     div[key] = document.createElement("div");
     div[key].innerHTLM = data[key];
     div[key].onclick = function() { alert(key);}
    }
    Et mon problème est le suivant, j'ai besoin d'éxécuter une fonction en fonction de "key", mais je viens de m'apercevoir du problème, c'est à dire qu'il éxécute cette fonction avec la dernière valeur de "key" ...

    Je me suis creusé la tête et je n'ai pas réussi à résoudre ce problème, que d'ailleurs je suis persuadé que la solution est tout bête et que je n'y ai pas du tout pensé.

    Si une personne pouvait me donner un coup de pouce !
    Biensur, je reste à votre disposition si vous ne comprennez pas exactement quelque chose !
    }

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    Par défaut
    pourrais-tu nous dire ce que tu veux faire?
    (nécessité du tableau initial, nécessité d'un tableau de variables, nature de l'objet html "div" ==> dont le nom est à changer...)...;

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    et surtout
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Désolé je suis nouveau ! Pas tapper =)

    C'est assez compliqué à expliquer c'est pour cela que j'ai juste utilisé un exemple. En gros je déclare un objet et dans cet objet je définis plusieurs tableaux (équivalent à data). Mon but est à partir d'une fonction de créer des calques "div" en fonction de ces tableaux déclaré.

    Exemple :
    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
     
    Modules.BookmarksInfos = {
    			title : "Bookmarks",
    			name : "Bookmarks",
    			id : "bookmarks",
    			template : "pod1",
    			style : {
    				float: "left",
    				width: "200px"
    			},
    			path : "js/modules/bookmarks.js",
    			options : {
                                    add: "Ajouter",
    				edit: "Edition"
    			}}
    J'ai utilisé div car en gros, j'aurais plusieurs calques, un peu dans la manière de "netvibes.com". Je définie dans chacun de ces calques un titre (title), une id (id), une class (template), un style spécifique si nécessaire (style), un fichier Js (path) a éxécuter contenant les instructions du Module, et les "outils" propres à chaques modules (options).

    J'ai aucun problème pour le tout, jusqu'au moment ou je souhaite crée créer les éléments correspondants aux "outils" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    divOptionsElm = new Object();
    this.OptionsElm = new Object();
    for (key in obj.options) { // obj qui correspond à Modules.BookmarksInfos par exemple
       divOptionsElm[key]= document.createElement("div");
       this.OptionsElm[key] = divOptionsElm[key];
       divOptionsElm[key].innerHTML = '<a href="#">'+ obj.options[key] +'</a>';
       if (Browser.isIE) divOptionsElm[key].style.styleFloat = "left";
       else if (Browser.isFF) divOptionsElm[key].style.cssFloat = "left";
       divOptionsElm[key].onclick = function() { execOption(key); }
    }
    Voilà en gros mon code. La fonction "execOption(key)" permet d'éxécuter la fonction correspondante à l'outil dans le fichier Js approprié que j'ai préalablement chargé.

    Mais le problème est que quand on clique justement sur n'importe quel élément, "execOption(key)" prend la dernière valeur attribué à "key", dans notre exemple "edit".

    C'est un peu plus clair ?

    *** EDIT ***
    J'ai édité mon message précédent pour les balises :>
    Je suis un peu "débutant" dans le DOM et ce genre de choses, j'essai un peu de pousser et tester pas mal de choses pour voir à quelle sauce je pourrais l'utiliser.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    up

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Après plusieurs heure de casse tête, j'ai réussi à trouver une solution plus au moins louche.

    J'ai défini lors de la création du div correspondant à "l'outil" un attribut "option' (div option=XXX) que je récupère de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    divOptionsElm[key].onclick = function() { execOption(this.option); }
    Ce qui me permet donc d'obtenir le résultat que je souhaité.
    Certes c'est un peu de la "magouille", mais je ne voyais pas d'autres solutions !

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

Discussions similaires

  1. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 11h39
  2. [VC++] Récupération de variables d'environnement
    Par LeonardDev dans le forum MFC
    Réponses: 2
    Dernier message: 02/03/2005, 11h09
  3. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37
  4. Récupération de variable
    Par Fred- dans le forum ASP
    Réponses: 13
    Dernier message: 17/06/2004, 20h13
  5. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51

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