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 :

Combinaison tableau associatif + tableau indicé


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Combinaison tableau associatif + tableau indicé
    salut,
    j'ai un problème de combiné 2 tableau ( associatif + indicé )
    mon petit programme n'exécute pas et je ne sais pas ou est le problème exactement
    merci de m'aidez

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <html>
    <head>
    <script type="text/javascript">
     
    var data_form=new Array()
    {
     data_form[0]={"text":{"label":"NCIN","name":"ZNCIN"}};
     data_form[1]={"text":{"label":"nom et prenom","name":"ZNP"}};
     data_form[2]={"select":{"label":"departement","name":"zdep","choix",0:{"name":"TI","value":"technologie de l informatique"},1:{"name":"GM","value":"Genie mecanique"},2:{"name":"GE","value":"Genie electrique"}]}};
     data_form[3]={"boutton":{"name":"bvalider","value":"valider"}};
    }
    dessiner_formulaire=function()
    {
     
    	for(i=0;i<data_form.length;i++)
    	{
    		for(var indice in data_form[i] )
    		{
    			if(indice.indexOf("text",0)==0)
    			{
    				document.write(data_form[indice]["label"]+" : ");
    				document.write("<input type='text' name='"+data_form[indice]["name"]+"'><br>");
    			}
    			else{
    				if(indice.indexOf("select",0)==0)
    				{
     
    					for (i=0;i<data_form.indice.length;i++)
    					{
    					document.write(data_form[indice][i]["label"]+"<select> <option>data_form[2].choix[TI] <option>data_form[2].choix[GM] <option>data_form[2].choix[GE]</select>");
    					}
    				}
    				else{
    					if(indice.indexOf("boutton",0)==0)
    					{
    					document.write("<br> <input type='button' name='"+data_form.indice["name"]+"' value='"+data_form[indice]["value"]+"'><br>");
    					}
    				}
    			}
    		}
    	}
    }
     
    </script>
    </head>
    <body >
    <form name="f">
    <script language="javascript">
    dessiner_formulaire();
    </script>
    </form>
     
    </body>
    </html>

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    var data_form=[
      {"text": 
        {"label":"NCIN",
          "name":"ZNCIN"
        }
      },
      {"text":
        {"label":"nom et prenom",
          "name":"ZNP"
        }
      },
      {"select":
        {"label":"departement",
          "name":"zdep",
          "choix", // Ici choix n'a pas de valeur la syntaxe est KO
          0: // la clef de la hashmap est une string donc ce sera "0"
           {"name":"TI",
             "value":"technologie de l informatique"
           },
          1: // la clef de la hashmap est une string donc ce sera "1"
           {"name":"GM",
             "value":"Genie mecanique"
           },
          2: // la clef de la hashmap est une string donc ce sera "2"
           {"name":"GE",
             "value":"Genie electrique"
           }
    ] // <= Il sort d'où celui là ??
        }
      },
      {"boutton":
        {"name":"bvalider",
          "value":"valider"
        }
      }
    ];
    j'imagine que tu voulais faire quelque chose comme
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    var data_form=[
      {"text": 
        {"label":"NCIN",
          "name":"ZNCIN"
        }
      },
      {"text":
        {"label":"nom et prenom",
          "name":"ZNP"
        }
      },
      {"select":
        {"label":"departement",
          "name":"zdep",
          "choix":
            [
              // indice 0
               {"name":"TI",
                 "value":"technologie de l informatique"
               },
              // indice 1
               {"name":"GM",
                 "value":"Genie mecanique"
               },
              // indice 2
               {"name":"GE",
                 "value":"Genie electrique"
               }
            ] // fin du tableau "choix"
        }
      },
      {"boutton":
        {"name":"bvalider",
          "value":"valider"
        }
      }
    ];
    Un tableau est un tableau une HashMap est une HashMap
    Javascript est un langage typé il ne faut pas tout mélanger
    ecrire var a = {0: "test"}; revient à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var a = new Object();
    a["0"]="test";
    C'est une HashMap ce n'est pas un tableau


    enfin lit les tuto sur le site
    document.write() est à mettre à la poubelle

    A+JYT

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    merci pour votre aide
    j'ai essaye de corriger des fautes mais le console d'erreur de firefox m'affiche que ("choix" is not defiened ) et dans l'affichage sur le web il ya juste 2 case zone texte et il n y a pas la liste de roulante je croix que la faute est dans la ligne num 61 mais je n'arrive pas à la voir :/

    voici le code à nouveau

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <html> 
    <head> 
    <script type="text/javascript"> 
     
    var data_form=[ 
    {"text": 
    {"label":"NCIN", 
    "name":"ZNCIN" 
    } 
    }, 
    {"text": 
    {"label":"nom et prenom", 
    "name":"ZNP" 
    } 
    }, 
    {"select": 
    {"label":"departement", 
    "name":"zdep", 
    "choix": 
    [ 
    // indice 0 
    {"name":"TI", 
    "value":"technologie de l informatique" 
    }, 
    // indice 1 
    {"name":"GM", 
    "value":"Genie mecanique" 
    }, 
    // indice 2 
    {"name":"GE", 
    "value":"Genie electrique" 
    } 
    ] // fin du tableau "choix" 
    } 
    }, 
    {"boutton": 
    {"name":"bvalider", 
    "value":"valider" 
    } 
    } 
    ]; 
     
    dessiner_formulaire=function() 
    { 
     
    for(i=0;i<data_form.length;i++) 
    { 
    for(var indice in data_form[i] ) 
    { 
    if(indice.indexOf("text",0)==0) 
    { 
    document.write(data_form[i][indice]["label"]+" : "); 
    document.write("<input type='text' name='"+data_form[i][indice]["name"]+"'><br>");
    } 
    else{ 
    if(indice.indexOf("select",0)==0) 
    { 
     
    for (j=0;j<data_form[i][indice][choix].length;j++) 
    { 
    document.write(data_form[i][indice]["label"]+"<select> <option>data_form[i].select.choix[j]</option> <option>data_form[i].select.choix[j] </option><option>data_form[i].select.choix[j]</option></select>"); 
    } 
    } 
    else{ 
    if(indice.indexOf("boutton",0)==0) 
    { 
    document.write("<br> <input type='button' name='"+data_form.indice["name"]+"' value='"+data_form[indice]["value"]+"'><br>"); 
    } 
    } 
    } 
    } 
    } 
    } 
     
    </script> 
    </head> 
    <body > 
    <form name="f"> 
    <script language="javascript"> 
    document.write(dessiner_formulaire()); 
    </script> 
    </form> 
     
    </body> 
    </html>

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 922
    Points
    44 922
    Par défaut
    Bonjour,
    console d'erreur de firefox m'affiche que ("choix" is not defiened )
    il est clair que dans ton code choix n'est JAMAIS initialisé.


    Citation Envoyé par sekaijin
    document.write() est à mettre à la poubelle

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Ligne 59 tu utilise une variable choix qui n'est jamais définie data_form[i][indice][choix].length;j++A+JYT

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pour bien comprendre les choses.

    Imaginons que data_form[i][indice] soit un objet.
    Si dans cet objet tu as une entrée 'choix', tu peux y faire référence de deux façons distinctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data_form[i][indice].choix;
    data_form[i][indice]['choix'];
    En revanche, si tu cherches à faire référence à la valeur d'une variable, la seule notation possible (en admettant que tu ais une entrée 'rang' dans ton objet) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var choix = 'rang';
    data_form[i][indice][choix];
    donc ici, l'entrée désignée (sans quote) correspondra à celle de l'objet ayant pour valeur la valeur de la variable choix.

Discussions similaires

  1. Changer les indices d'un tableau associatif
    Par identifiant_bidon dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2011, 19h16
  2. [SOAP] tableau associatif --> tableau d'objets
    Par mickael.guilbert dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/01/2008, 18h05
  3. Tableau associatif : connaître la valeur de l'indice
    Par NikoBe dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/11/2006, 13h56
  4. [langage] TRI TABLEAU ASSOCIATIF
    Par proner dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2003, 16h38
  5. [langage] Réinitialiser un tableau associatif.
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2003, 16h29

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