Problème de combinaison tableau associatif + tableau indicé [Résolu/Fermé]

Signaler
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014
-
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014
-
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

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
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
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014

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>
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
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>
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014

merciiiiii beaucoup pour ton aide :)
pour l "undefined " j'ai rien à faire je la laissé comme ça pour le moment

:)
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
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
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014

ouii ça marche tres tres bien merci bcp pour votre attention et surtt pour votre aide :)