- ベストアンサー
SELECTボックスの内容を動的に変えるには
2つのSELECTボックスを用意し、1つ目のSELECTボックスの内容により 2つめのSELECTボックスの内容(項目数も含め)を変える方法を教えてください。 下記のようなHTMLを作ってみましたが、2つ目のSELECTボックスに項目がないため「オブジェクトがありません」のエラーが出ます。 ------------------------------------------------------- <html> <head> <SCRIPT language="vbscript"> <!-- option explicit sub selchng() dim strsel strsel = sel1.selectedIndex Select Case strsel Case "1" sel2.item(0).value = "1" sel2.item(0).text = "1" sel2.item(1).value = "2" sel2.item(1).text = "2" Case "2" sel2.item(0).value = "a" sel2.item(0).text = "a" sel2.item(1).value = "b" sel2.item(1).text = "b" sel2.item(2).value = "c" sel2.item(2).text = "c" Case else sel2.item(0).value = "A" sel2.item(0).text = "A" End Select end sub --> </SCRIPT> </head> <body> <select name="sel1" onchange=selchng()> <option value="1" selected>1</option> <option value="2" >2</option> <option value="3" >3</option> </select> <select name="sel2"> </select> </body> </html>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1の方と同じですがVBScript版です。 strsel = sel1.selectedIndex はセレクトボックスの順番で取得(0~) この場合Caseの設定は case 0 case 1 case 2 となる sstrsel = el1.value にするとオプションのValue値から取得 この場合Caseの設定は case "1" case "2" case "3" となる <html> <head> <SCRIPT language="vbscript"> <!-- option explicit sub selchng() dim strsel strsel = sel1.value Select Case strsel Case "1" sel2.options.length = 2 sel2.options(0).value = "1" sel2.options(0).text = "1" sel2.options(1).value = "2" sel2.options(1).text = "2" Case "2" sel2.options.length = 3 sel2.options(0).value = "a" sel2.options(0).text = "a" sel2.options(1).value = "b" sel2.options(1).text = "b" sel2.options(2).value = "c" sel2.options(2).text = "c" Case else sel2.options.length = 1 sel2.options(0).value = "A" sel2.options(0).text = "A" End Select end sub --> </SCRIPT> </head> <body> <select name="sel1" onchange=selchng()> <option value="1" selected>1</option> <option value="2" >2</option> <option value="3" >3</option> </select> <select name="sel2"> </select> </body> </html>
その他の回答 (2)
- mirurin
- ベストアンサー率43% (48/111)
Case "1" の後に sel2.options.length = 2 Case "2" の後に sel2.options.length = 3 Case else の後に sel2.options.length = 1 を挿入してオプション要素の数を指定してやればできます。
お礼
ありがとうございます。試してみます。
VBの関数が解らないのですが以下のソースなら動きます… 単に「sel2.length」のような指定をしていない可能性って無いですかね? <html> <head> <SCRIPT language="JavaScript"> <!-- // function func(zzzz){ switch(zzzz.sel1.selectedIndex){ case 0: zzzz.sel2.length = 2; zzzz.sel2.options[0].value = "1" ; zzzz.sel2.options[0].text = "1" ; zzzz.sel2.options[1].value = "2" ; zzzz.sel2.options[1].text = "2" ; break; case 1: zzzz.sel2.length = 3; zzzz.sel2.options[0].value = "a" ; zzzz.sel2.options[0].text = "a" ; zzzz.sel2.options[1].value = "b" ; zzzz.sel2.options[1].text = "b" ; zzzz.sel2.options[2].value = "c" ; zzzz.sel2.options[2].text = "c" ; break; case 2: zzzz.sel2.length = 1; zzzz.sel2.options[0].value = "A" ; zzzz.sel2.options[0].text = "A" ; break; } } // --> </SCRIPT> </head> <body onLoad="func(ffff)"> <form name="ffff"> <select name="sel1" onchange="func(ffff)"> <option value="1" selected>1</option> <option value="2" >2</option> <option value="3" >3</option> </select> <select name="sel2"> </select> </form> </body> </html>
お礼
ありがとうございます。試してみます。
お礼
ありがとうございました。試してみます。