• ベストアンサー

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>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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>

kmor
質問者

お礼

ありがとうございました。試してみます。

その他の回答 (2)

  • mirurin
  • ベストアンサー率43% (48/111)
回答No.2

Case "1" の後に sel2.options.length = 2 Case "2" の後に sel2.options.length = 3 Case else の後に sel2.options.length = 1 を挿入してオプション要素の数を指定してやればできます。

kmor
質問者

お礼

ありがとうございます。試してみます。

noname#6248
noname#6248
回答No.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>

kmor
質問者

お礼

ありがとうございます。試してみます。