別のドロップダウンに依存する値をドロップダウン リストに入力したい。つまり、最初のコントロールで項目を選択すると、2 番目のコントロールは対応する「サブ項目」をロードする必要があります。
これは私の JS コードです (HTML ヘッド内):
<script type="text/javascript">
var tipos = new Array("Tipo1", "Tipo2", "Tipo3");
var subtipos_aux = new Array();
subtipos_aux[0]="Esto no deberia aparecer";
subtipos_aux[1]="Subtipos para TIPO1|Subtipos para TIPO1";
subtipos_aux[2]="Subtipos para TIPO2|Subtipos para TIPO2";
subtipos_aux[3]="Subtipos para TIPO3|Subtipos para TIPO3|Subtipos para TIPO3";
function cargarTipos() {
var lista = document.getElementById('__tipo');
var x, i = 0;
for(x in tipos){
lista.options[i++] = new Option(tipos[x],tipos[x]);
}
}
function cargarSubtipos(id_tipo) {
var lista = document.getElementById('__subtipo');
var x, i = 0; id_tipo++;
var subtipos = subtipos_aux[id_tipo].split("|");
for(x in subtipos) {
lista.options[i++] = new Option(subtipos[x],subtipos[x]);
}
}
そして、これが HTML 本文で関数を呼び出す方法です。
<fieldset>
...
<select id="__tipo" name="__tipo" onchange="cargarSubtipos(this.selectedIndex);">
...
<select id="__subtipo" name="__subtipo">
...
</fieldset>
<script language="javascript">cargarTipos("__tipo");</script>
メイン リストは完全に読み込まれ、そこからオプションを選択すると、サブタイプを読み取る関数が呼び出されます。ただし、セカンダリ リストには何も表示されません。私はどこにでもアラートを配置し、次のことに気付きました。
- selectedIndex の読み取り値: OK
- subtipos_aux から適切な要素を取得: OK
- subtipos_aux の subtipos (配列) への変換は問題ありません (for ループ内にアラートを入れています)
それで、誰かが私がここで間違っていることを教えてもらえますか?
ありがとう!