Problème de combinaison tableau associatif + tableau indicé

Résolu
wsara5454 Messages postés 72 Statut Membre -  
wsara5454 Messages postés 72 Statut Membre -
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

<html>
<head>
<script type="text/javascript>

form={0:"text":{"label":"NCIN","name":"ZNCIN"},
1:"text":{"label":"nom et prenom","name":"ZNP"},
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"}]},
3:boutton:{"name":"bvalider","value":"valider"}};

dessiner_formulaire=function()
{

for(i=0;i<form.length;i++)
{
for(indice in form[i] )
{
if(indice.indexOf("text",0)==0)
{
document.write(form[indice]["label"]+" : ");
document.write("<input type='text' name='"+form[indice]["name"]+"'><br>");
}
else{
if(indice.indexOf("select",0)==0)
{

for (i=0;i<form.indice.length;i++)
{
document.write(form[indice][i]["label"]+"<select> <option>form[2].choix[TI]</option> <option>form[2].choix[GM]</option> <option>form[2].choix[GE]</option></select>");
}
}
else{
if(indice.indexOf("boutton",0)==0)
{
document.write("<br> <input type='button' name='"+form.indice["name"]+"' value='"+form[indice]["value"]+"'><br>");
}
}
}
}
}

</script>
</head>
<body >
<form name="f">
<script language="javascript">
dessiner_formulaire();
</script>
</form>

</body>
</html>

4 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    j'ai essayer de rectifier mais il y a encore des erreurs voir console d'erreur de FireFox
    et vas voir ce site:
    https://www.xul.fr/ecmascript/associatif.php
    <html>
    <head>
    <script type="text/javascript">
    //ci dessus il te manquait les " a la fin du type=
    
    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<form.length;i++)
    	{
    		for(var indice in form[i] ) //la le var
    		{
    			if(indice.indexOf("text",0)==0)
    			{
    				document.write(form[indice]["label"]+" : ");
    				document.write("<input type='text' name='"+form[indice]["name"]+"'><br>");
    			}
    			else{
    				if(indice.indexOf("select",0)==0)
    				{
    
    					for (i=0;i<form.indice.length;i++)
    					{
    					document.write(form[indice][i]["label"]+"<select> <option>form[2].choix[TI]</option> <option>form[2].choix[GM]</option> <option>form[2].choix[GE]</option></select>");
    					}
    				}
    				else{
    					if(indice.indexOf("boutton",0)==0)
    					{
    					document.write("<br> <input type='button' name='"+form.indice["name"]+"' value='"+form[indice]["value"]+"'><br>");
    					}
    				}
    			}
    		}
    	}
    } //il
    0
  2. wsara5454 Messages postés 72 Statut Membre
     
    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

    voici le code à nouveau

    <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>
    0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    j'ai pas mal progressé il reste une petite erreu undefined.
    Attention dans <script il faut type="text/javascript"
    dans les balise html la valeur des arguments doit être entre "

    ex name="...."
    <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  //// j'ai inversé name et value
    {"value":"TI","name":"technologie de l informatique"}, 
    // indice 1 
    {"value":"GM","name":"Genie mecanique"}, 
    // indice 2 
    {"value":"GE","name":"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) 
        { 
          document.write(data_form[i][indice]['label']+'<select name="'+data_form[i][indice]['name']+'">'); 
          for (k=0;k<data_form[i][indice]['choix'].length;k++) 
          { 
           document.write('<option value="'+data_form[i][indice]['choix'][k]['value']+'">'+data_form[i][indice]['choix'][k]['name']+'</option>'); 
          } 
         document.write('</select>'); 
        } 
        else{ 
         if(indice.indexOf("boutton",0)==0) 
         { 
          document.write('<br> <input type="submit" name="'+data_form[i][indice]['name']+'" value="'+data_form[i][indice]['value']+'" /><br>'); 
         } 
        } 
       } 
      } 
     } 
    } 
    
    </script> 
    </head> 
    <body > 
    <form name="f" method="post" action=""> 
    <script  type="text/javascript"> 
    document.write(dessiner_formulaire()); 
    </script> 
    </form> 
    
    </body> 
    </html>
    0
  4. wsara5454 Messages postés 72 Statut Membre
     
    merciiiiii beaucoup pour ton aide :)
    pour l "undefined " j'ai rien à faire je la laissé comme ça pour le moment

    :)
    0
    1. Alain_42 Messages postés 5413 Statut Membre 904
       
      bonsoir, ça me taquinait un peu ce pb de Undefinied

      il faut mettre:
      <form name="f" method="post" action=""> 
      <script  type="text/javascript"> 
      dessiner_formulaire(); 
      </script> 
      </form>


      et pas document_write(dessiner_formulaire()) car l'instruction document_write est déja dans la fonction
      0
    2. wsara5454 Messages postés 72 Statut Membre
       
      ouii ça marche tres tres bien merci bcp pour votre attention et surtt pour votre aide :)
      0