附加选择选项 - IE问题/解决方案会导致其他浏览器问题

时间:2010-10-18 00:27:28

标签: javascript internet-explorer select innerhtml

我有一个<select>,取决于之前的选项,由一个带有一堆<option>值的var填充。

当然,因为IE不能与innerHTML一起使用,所以我必须将此模板附加到<select>,现在它在IE中运行得很好。但是,我现在需要一种方法来清除前一次搜索中的选择选项,并在FF中停止它从下拉到列表中的最后一个<option>

3 个答案:

答案 0 :(得分:1)

只需使用innerHTML重写整个选择块,它始终有效。

答案 1 :(得分:1)

<select>

清除选项的万无一失的方法
while( select_control.length > 0 )
     select_control.options[0] = null

如果您select_control.length = 0,某些浏览器会清除该列表,但我发现这不可靠。

插入选项的万无一失的方法:

var new_option = new Option(text, value)
try {
    select_control.add(new_option, select_control.options[0])
} catch(e) {
    select_control.add(new_option, 0)
}

0是您之前想要物品的索引。要将其添加到最后,请改为:

select_control.options[select_control.length] = new_option

如果您想通过指定现有选项的索引来替换特定项目,这也会有效。

答案 2 :(得分:0)

使用YUI3:

    node.setContent(template); //removes old children, sets new template as content.
    node.set('selectedIndex', 0); //forces FF to select the first one

使用正确的方法进行编辑。