JavaScript:辅助组合框不刷新

时间:2013-06-12 17:16:16

标签: javascript onchange html-select

我想在下拉列表中填充依赖于另一个下拉列表的值,也就是说,当我在第一个控件中选择一个项目时,第二个控件应该加载相应的“子项”。

这是我的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>

主列表加载完美,当我从中选择一个选项时,读取子类型的函数被调用。但是,辅助列表没有显示任何内容! 我把警报放在各处,注意到:

  1. 读取selectedIndex的值:确定
  2. 从subtipos_aux获取适当的元素:确定
  3. 将subtipos_aux转换为subtipos(数组)是正常的(我在for循环中放了一个警告)
  4. 所以就是这样,有人能告诉我这里我做错了什么吗?

    谢谢!

1 个答案:

答案 0 :(得分:0)

加载时你没有填充选择,所以你需要把它放在cargarTipos的末尾:

cargarSubtipos(0);

There's an example