Problème de combinaison tableau associatif + tableau indicé

Résolu
wsara5454 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
wsara5454 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -
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>
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
wsara5454 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
wsara5454 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
merciiiiii beaucoup pour ton aide :)
pour l "undefined " j'ai rien à faire je la laissé comme ça pour le moment

:)
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
wsara5454 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
ouii ça marche tres tres bien merci bcp pour votre attention et surtt pour votre aide :)
0