par
enjoy man » 07 août 2005, 19:20
Bonjour à tous
Alors voila j'ai un script pour des listes déroulantes liées (je me
suis inspiré de
http://guylinux.no-ip.com/~guy/test2/articlegood.php).
Après avoir étudié,cherché,modifié,galéré, la première option
(selected) par défaut s'affiche parfaitement mais si je veux changer
de pays, aucun changement ne survient et j'ai une erreur du genre
document.formu2.element a la valeur null ou n'est pas un objet.
Pour illustrer mon pb, sur la page articlegood.php du lien plus haut
j'ai bien 'categorie1' 'article' qui s'affiche au chargement de la
page mais si je séléctionne 'categorie 2' j'ai un message d'erreur et
je garde l'affichage par defaut dans la liste 2.
Alors voilà je vous copie le code généré avec le tableau généré par
php (a partir d'une bdd)
et vous remercie de l'aide que vous pourriez m'apporter...
Cyril
Code : Tout sélectionner
var categorie = new Array; //nouveau tableau
var modele=new Array;
categorie[0] = new Array("p0", "Bmw");
modele["p0"] = new Array;
modele["p0"]["0"] = new Array("4", "z3");
categorie[1] = new Array("p1", "Mercedes-Benz");
modele["p1"] = new Array;
modele["p1"]["0"] = new Array("3", "Classe A");
categorie[2] = new Array("p2", "Peugeot");
modele["p2"] = new Array;
modele["p2"]["0"] = new Array("1", "405");
categorie[3] = new Array("p3", "Renault");
modele["p3"] = new Array;
modele["p3"]["0"] = new Array("2", "Scenic");
function filltheselect(liste, choix)
{switch (liste)
{
case "categorie":
raz("modele");
for (i=0; i<modele[choix].length; i++)
{
new_option = new Option(categorie[choix][i][1],modele[choix][i][0]);
document.formu2.elements["modele"].options[document.formu2.elements["modele"].length]=new_option;
}
}
}
function raz(liste)
{l=document.formu2.elements[liste].length;
for (i=l; i>=0; i--)
document.formu2.elements[liste].options[i]=null;
}
Et mon formulaire :
Code : Tout sélectionner
<form name="formu2">
Choisir une categorie
<select name="categorie" onChange='javascript:filltheselect(this.name,
this.value)'>
<script language="javascript">
for (i=0; i<categorie.length; i++)
document.write("<option value=\"" +categorie[i][0]+ "\">"
+categorie[i][1]);
</script>
</select>
<br>
Choisir un article
<select name="modele" onChange='javascript:filltheselect(this.name,
this.value)'>
<script language="javascript">
for (i=0; i<modele["p0"].length; i++)
document.write("<option value=\"" +modele["p0"][i][0]+ "\">"
+modele["p0"][i][1]);
</script>
</select>
<br>
</form>
Bonjour à tous
Alors voila j'ai un script pour des listes déroulantes liées (je me
suis inspiré de [url]http://guylinux.no-ip.com/~guy/test2/articlegood.php[/url]).
Après avoir étudié,cherché,modifié,galéré, la première option
(selected) par défaut s'affiche parfaitement mais si je veux changer
de pays, aucun changement ne survient et j'ai une erreur du genre
document.formu2.element a la valeur null ou n'est pas un objet.
Pour illustrer mon pb, sur la page articlegood.php du lien plus haut
j'ai bien 'categorie1' 'article' qui s'affiche au chargement de la
page mais si je séléctionne 'categorie 2' j'ai un message d'erreur et
je garde l'affichage par defaut dans la liste 2.
Alors voilà je vous copie le code généré avec le tableau généré par
php (a partir d'une bdd)
et vous remercie de l'aide que vous pourriez m'apporter...
Cyril
[code]
var categorie = new Array; //nouveau tableau
var modele=new Array;
categorie[0] = new Array("p0", "Bmw");
modele["p0"] = new Array;
modele["p0"]["0"] = new Array("4", "z3");
categorie[1] = new Array("p1", "Mercedes-Benz");
modele["p1"] = new Array;
modele["p1"]["0"] = new Array("3", "Classe A");
categorie[2] = new Array("p2", "Peugeot");
modele["p2"] = new Array;
modele["p2"]["0"] = new Array("1", "405");
categorie[3] = new Array("p3", "Renault");
modele["p3"] = new Array;
modele["p3"]["0"] = new Array("2", "Scenic");
function filltheselect(liste, choix)
{switch (liste)
{
case "categorie":
raz("modele");
for (i=0; i<modele[choix].length; i++)
{
new_option = new Option(categorie[choix][i][1],modele[choix][i][0]);
document.formu2.elements["modele"].options[document.formu2.elements["modele"].length]=new_option;
}
}
}
function raz(liste)
{l=document.formu2.elements[liste].length;
for (i=l; i>=0; i--)
document.formu2.elements[liste].options[i]=null;
}
[/code]
Et mon formulaire :
[code]<form name="formu2">
Choisir une categorie
<select name="categorie" onChange='javascript:filltheselect(this.name,
this.value)'>
<script language="javascript">
for (i=0; i<categorie.length; i++)
document.write("<option value=\"" +categorie[i][0]+ "\">"
+categorie[i][1]);
</script>
</select>
<br>
Choisir un article
<select name="modele" onChange='javascript:filltheselect(this.name,
this.value)'>
<script language="javascript">
for (i=0; i<modele["p0"].length; i++)
document.write("<option value=\"" +modele["p0"][i][0]+ "\">"
+modele["p0"][i][1]);
</script>
</select>
<br>
</form>
[/code]