Menu Depende
Abhängiges Menu
Der Inhalt des zweiten Menu steht in Abhängigkeit zur Auswahl im ersten Menu. Wählen wir im ersten Menu einen Schriftsteller aus, erscheinen im zweiten Menu ausschliesslich dessen Werke zur Auswahl. Die Wahl im zweiten Menu löst dann eine Meldung aus (im Praktischen Fall würden wir etwas damit anfangen).
Das Skript basiert auf einem zweidimensionalen associativen Array mit name 'autoren'. Die erste Dimension speichert den Autor, die zweite Dimension dessen Werke. Wählen wir in der ersten select box eine Option aus, aktiviert der dortige event handler onchange die 'function zeigen()' im Head-Script. Mit jener Funktion fischen wir uns mittels folgender Zeile die angewählte Option heraus:
gewaehlter_Wert=document.banane.eins.options[document.banane.eins.options.selectedIndex].value;
'gewaehlter_wert' steht für eine Variable deren Wert der auserwählte Schriftsteller ist. Wir haben uns durch die Objektstruktur hindurch geangelt:
'document' ist die Datei. 'banane' ist der name des Formulars.
'eins' ist der name des Elements, also der ersten select box. 'options[...]' ist das Auswahlfeld [welches ausgewählt wurde]. bis zum Wert 'value'.
// i wird in jeder Runde um einen hochgezählt
for(i=0;i<autoren[gewaehlter_Wert].length;i++) {
autoren[gewaehlter_wert].length gibt uns die Anzahl der Array-Elemente zurück, solange 'i' (der Index des gerade behandelten Elements)
kleiner ist als die Anzahl, wenden wir innerhalb der for Schleife folgende drei dubiosen Zeilen zum schreiben in die zweite select box an:
// 1) aus dem Array wird das entsprechende Werk herausgelesen optionen=new Option(autoren[gewaehlter_Wert][i]); // 2) der Name des options-Feld wird geschrieben, das nach dem <option Tag> document.banane.zwei.options[i]=optionen; // 3) der Wert des options-Feldes wird zugewiesen document.banane.zwei.options[i].value=autoren[gewaehlter_Wert][i]; }
1) 'autoren[gewaehlter_wert]' bezeichnet einen der vier assoziativen Arrays (Schriftsteller) und [i] den Index (ein Werk),
also autoren["Thomas Mann"][0] ist der erste Eintrag im 'Thomas Mann'-Array, nämlich das Werk ' Buddenbrocks'.
Damit schaffen wir in jeder Runde eine neue Option (ein Objekt) welches wir 'optionen' nennen.
2) setzt dieses Objekt mit dem 'options[i]'-Objekt der zweiten select box im Formular 'banane' gleich.
Das ist der Objekt-Name, den die User lesen können.
3) zuweisen von dem, was tatsächlich übergeben wird, der Wert.