セレクトメニューの選択項目に応じて、もう1つのセレクトメニューの内容を変更する(変更時に表示)


動作ブラウザ 【 IE:4.0  NN:3.0
Internet Explorer Netscape Navigator DreamPassport iCab
3.0x 4.0x 4.5 5.0x 5.5 2.0x 3.0x 4.0x 4.x 6.0 2 3 2.x
Windows × - × - × -
Macintosh × - × - -
UNIX - - - - - × - - -
Dreamcast - - - - - - - - - - × × -

ポイント for (i=0; i<itemNum; i++) { document.myForm.Computer.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } document.myForm.Computer.style.visibility = "visible"; <select name="Computer" style="visibility:hidden">
説  明 セレクトメニューの選択項目に応じて、もう1つのセレクトメニューの内容を変更するには、変更する項目を配列に入れておきます。配列は一次元配列でなく二次元配列にしておくと処理が楽になります。選択されたメニューの番号を配列のキーにしてnew Option()でメニュー項目を変更します。引数は2つで最初の引数が項目名、次がvalue(実際にCGI経由で渡されるデータ)になります。
 内容を変更するセレクトメニューを最初だけ隠しておきたい場合にはselectタグにスタイルシートのvisibilityプロパティを使って非表示にします。非表示にするにはhiddenを設定します。セレクトメニューの内容が変更されたらvisivilityプロパティにvisibleを入れることでメニューを表示させる事ができます。
サンプル <html> <head> <title>セレクトメニューの選択項目に応じて、もう1つのセレクトメニューの内容を変更する(変更時に表示)</title> <script language="JavaScript"><!-- menuItem = [ ["MZ-80K","MZ-700","MZ-2500"], ["PC-6001","PC-8001","PC-8801"], ["FM-8","FM-7","FM-11"] ]; itemNum = 3; // 項目数 function setMenuItem(n) { for (i=0; i<itemNum; i++) { document.myForm.Computer.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } document.myForm.Computer.style.visibility = "visible"; } // --></script> </head> <body> <form name="myForm"> <select name="Maker" onChange="setMenuItem(this.selectedIndex)"> <option value="SHARP">SHARP</option> <option value="NEC">NEC</option> <option value="FUJITSU">FUJITSU</option> </select> <select name="Computer" style="visibility:hidden"> <option value="MZ-80K">MZ-80K</option> <option value="MZ-700">MZ-700</option> <option value="MZ-2500">MZ-2500</option> </select> </form> </body> </html>
補足説明 Safariでも動作します。

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA