select.getElementById()。select标签的innerHTML在IE中不起作用

时间:2010-05-14 23:16:35

标签: javascript ajax

我有以下简单的脚本


<input type="button" onclick="document.getElementById('a').innerHTML = '<option>something</option>';"/>    
 <select id="a" style="width: 150px;">
</select>

但它在IE中不起作用。 你能告诉我为什么吗? 感谢

4 个答案:

答案 0 :(得分:2)

最好让AJAX脚本返回包含所需选项的JSON对象,然后使用DOM方法创建匹配它们的选项节点。

如果你真的必须使用HTML字符串,那么这样做的方法是编写一个全新的<select>元素,里面有选项。然后,您可以将<option>节点中的信息复制到您最初定位的选择中。

var select= document.getElementById('a');
select.options.length= 0;

var div= document.createElement('div');
div.innerHTML= '<select>'+options+'</select>';
var options= div.firstChild.options;
for (var i= 0; i<options.length; i++) {
    var o= options[i];
    select.options[i]= new Option(o.text, o.value, o.selected);
}

答案 1 :(得分:1)

或者只是使用jQuery和html()代替innerHTML ...

因此...

$("#a").html("<option>Whatever</option>");

适用于所有对象的所有浏览器都很棒!

答案 2 :(得分:0)

IE不喜欢你这样做的事情。设置innerHTML表格也是如此。

你应该学习以DOM方式做事......例如,使用createElement ("OPTION"),然后使用appendChild()(如果需要,首先删除带有removeChild()的孩子)。一般来说,它比innerHTML更好。

答案 3 :(得分:0)

使用此代码:

var optionElement = document.createElement("option");
optionElement.innerHTML = "some text here";

document.getElementById('a').appendChild(optionElement);