Problème de combinaison tableau associatif + tableau indicé

Résolu/Fermé
wsara5454 Messages postés 58 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 27 octobre 2014 - Modifié par wsara5454 le 9/01/2013 à 22:39
wsara5454 Messages postés 58 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 27 octobre 2014 - 12 janv. 2013 à 21:38
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

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 janv. 2013 à 19:22
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 58 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 27 octobre 2014
11 janv. 2013 à 23:43
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 12/01/2013 à 10:41
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 58 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 27 octobre 2014
12 janv. 2013 à 11:52
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 12/01/2013 à 20:22
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 58 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 27 octobre 2014
12 janv. 2013 à 21:38
ouii ça marche tres tres bien merci bcp pour votre attention et surtt pour votre aide :)
0