2つのプルダウンを連動させる
2つプルダウンがあったとき片方で選択した内容に応じもう一方のプルダウンの内容が
変更されるように以下のようなコードを書いてみました。
しかし、これだと1番目のプルダウンでAを選択した後、Bを選択しなおすと
2番目のプルダウンの選択肢には前回Aを選んだ時に表示されていた内容が
残ってしまいます。そこで
連動するプルダウンの内容を作成する処理(Forループの処理)の直前で
for (i=0; i<itemNum; i++) {
document.myForm.tableName.options[i] = new Option(null, null);
}
という初期化処理を書いてみたのですが結果は同じでした。
解決するための何か良い方法はございますでしょうか。
<html>
<head>
<title>プルダウン連動サンプル</title>
<script type="text/javascript">
table_name = [["10", "9", "8", "7", "6"], ["りんご", "メロン", "バナナ"], ["嵐"]];
function setMenuItem(n) {
itemNum = table_name[n].length; // 項目数
//連動するプルダウンの内容を作成
for (i=0; i<itemNum; i++) {
alert(table_name[n][i]);
document.myForm.tableName.options[i] = new Option(table_name[n][i], table_name[n][i]);
}
//プルダウンの先頭を選択
document.myForm.tableName.options[0].selected = true;
}
</script>
</head>
<body onLoad="setMenuItem(0)">
<form name="myForm">
<select name="database" onChange="setMenuItem(this.selectedIndex)">
<option selected>A</option>
<option>B</option>
<option>C</option>
</select>
<select name="tableName">
</select>
</form>
</body>
</html>
お礼
ご回答ありがとうございます。 早速やってみましたが、うまくいきませんでした。 どこがダメなのか教えていただけるとありがたいです。 以下のようにやってみました。 -------------- <script type="text/javascript" src="ConnectedSelect.js"></script> <form action="#"> <dl> <dt>カテゴリー</dt> <dd> 親カテゴリ<select id="SEL1"> <option value="">---</option> <option value="fruits">果物</option> <option value="vegetable">野菜</option> </select> </dd> <dt>型番 / 製品名</dt> <dd> 子カテゴリ<select id="SEL2"> <option value="">---</option> <optgroup label="fruits"> <option value="apple">りんご</option> <option value="melon">メロン</option> </optgroup> <optgroup label="vegetable"> <option value="tomato">トマト</option> <option value="cabbage">キャベツ</option> </optgroup> </select> </dd> <dt>対 象</dt> <dd> 孫カテゴリ<select id="SEL3"> <option value="">---</option> <optgroup label="apple"> <option value="orin">王林</option> <option value="fuji">ふじ</option> <option value="kogyoku">紅玉</option> </optgroup> <optgroup label="melon"> <option value="andes">アンデスメロン</option> <option value="yubari">夕張メロン</option> <option value="musk">マスクメロン</option> </optgroup> <optgroup label="tomato"> <option value="momotaro">桃太郎</option> <option value="first">ファースト</option> <option value="furutica">フルティカ</option> </optgroup> <optgroup label="cabbage"> <option value="murasaki">ムラサキキャベツ</option> <option value="saboi">サボイキャベツ</option> <option value="ha">ハキャベツ</option> </optgroup> </select> </form> <div id="result_text"></div> <script> var lastSelectTag = document.getElementById("SEL3"); var value_text = lastSelectTag.options[lastSelectTag.selectedIndex].text; document.getElementById("result_text").innerHTML = "《あなたの選んだものは "+value_text+" です》"; </script> <script type="text/javascript"> ConnectedSelect(['SEL1','SEL2','SEL3']); </script>