我有一个<select>
,取决于之前的选项,由一个带有一堆<option>
值的var填充。
当然,因为IE不能与innerHTML一起使用,所以我必须将此模板附加到<select>
,现在它在IE中运行得很好。但是,我现在需要一种方法来清除前一次搜索中的选择选项,并在FF中停止它从下拉到列表中的最后一个<option>
。
答案 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
使用正确的方法进行编辑。