N'ayant pas tout compris, je risque une proposition de solution patielle inadéquate.
Dans la première fonction, cela me parrait clair et presque juste. Un point devrait, me semble-t-il, être modifié:
echo "<select name=".$nom_select." class=".$classe." onChange='Choix(this.form)'>";
Je le remplacerais par
echo "<select name=".$nom_select." class=".$classe." onChange='Choix(this)'>";
Car si je me rappelle bien (corrigez moi si je me trompe), 'this' en l'occurence signifie le select sur lequel on a cliqué. Et donc, 'this.form' n'a pas de sens.
Ce qui permet de changer quelque lignes de la fonction (plus obscure) suivante en:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function Choix(laSelection)
{
switch (laSelection.selectedIndex)
{
case 0 :
return;
break;
case 1 :
var txt = new Array ('sous options du champs 1');
break;
case 2 :
var txt = new Array ('sous options du champs 2');
break;
case 3 :
var txt = new Array ('sous options du champs 3');
break;
etc...
}
laSelection.selectedIndex = 0;
var sousMenu = document.getElementById("Sous_menu");
for (i=0;i<9;i++)
{
sousMenu.options[i+1].text=txt[i];
}
} |
Il s'entend ici qu'il n'y a qu'un seul sous menu et qu'il a un id="Sous_menu".
Deux points m'interpellent:
- Tu veux remplir un sous menu sur base d'un index dans le menu principal?
Quid si plus tard, quelqu'un rajoute un élément dans la liste des options de la liste principale?
- Les arrays que tu charges dans la variable txt contienent toujours 10 éléments?
Si non: BANG!!!!
Tu peux à moindre frais, écrire:
for (i=0;i<txt.length;i++)
Selon moi, ces quelques modifications ne donneront pas la solution finale mais peut être (je te le souhaite) t'avanceront dans ton cheminement.
(Attention, je n'ai pas testé, c'est le principe que j'énonce ici)
Partager