2009-08-11 69 views
1

我在谷歌上找到了一些结果,但没有满足,所以我希望有人在这里可能知道。修改选择与DOM

它好像使用的innerHTML在IE

不起作用

我已经建立了,什么也不做,但一个文件,它的一切,但IE浏览器的工作原理填充一个选择的元素,这里的代码的情况下,有人关心:

<html> 
<head></head> 

<body onload="populate();"> 
<script type="text/javascript"> 
    function populate() 
    { 
    document.getElementById("test").innerHTML = '<option id="a">works</option>'; 
    } 
</script> 

<select id="test"></select> 

</body> 
</html> 

任何人都知道这个解决方案吗?我不想删除所有内容,然后手动使用appendChild,因为我从另一个函数返回了html,并且这看起来很荒谬,但这不起作用。

任何想法,将不胜感激。

回答

3

编辑:这个答案写在OP之前说他不想使用appendChild()。我会保留这个答案以供参考。


这篇文章将使用POJSF。 (普通老式的JavaScript框架,该框架每隔框架是基于!)
对于那些谁不明白这一点,这是一个可怜的尝试幽默...

而不是使用的innerHTML,您可以创建您<option>使用document.createElement()

var newOption = document.createElement('option'); 
newOption.label = 'works'; 

newOption.appendChild(document.createTextNode(newOption.label)); 

newOption.id = 'a'; 

document.getElementById('mySelect').appendChild(newOption); 

如果你想删除所有<option><select>

var selectEl = document.getElementById('mySelect'); 
for(var i = selectEl.children.length - 1; i >= 0; i--) { 
    selectEl.removeChild(selectEl.children[i]); 
} 
+0

innerText不支持Firefox,请参阅http://www.quirksmode.org/dom/w3c_html.html – karim79 2009-08-11 22:56:27

+0

** @ karim79:**谢谢,修复。 InnerText实际上只是在IE6中需要的,所以即使Firefox不支持它,它也不需要它。 – 2009-08-11 22:59:14

+0

+1 - 现在我不知道。 – karim79 2009-08-11 23:00:15