2011-08-22 97 views
2

我有一个页面,它在添加新选项之前将选择列表的长度设置为0。这在所有浏览器中工作良好,直到IE9。在IE9中,我收到错误:DOM异常:NOT_FOUND_ERR(8)。这是我想要做的全部:javascript options.length = 0在IE9中不工作

var typebox = document.sForm.ePosition; 
typebox.options.length = 0; 

在兼容模式下工作正常。

+2

所以基本上你想添加项目之前删除选择框的所有元素?如果是这样,那不是最好的办法。 – Tejs

+2

好的。给我一些指点。什么是另一种方式去做呢? – Tom

+0

查看@ Seth的回答;你应该通过代码去除元素。 – Tejs

回答

3

尝试在控制台执行每一块,并看到您的例外是:

document.sForm 
document.sForm.ePosition 
document.sForm.ePosition.options 
document.sForm.ePosition.options.length 

我尝试的选项长度设置为0,并且是非常惊讶的是,它的工作(在Chrome)。在我看来,Array.length应该是只读属性。我会使用DOM代码删除元素,是这样的:使用jQuery

while (element.hasChildNodes()) { 
    element.removeChild(element.firstChild); 
} 
+0

+1这基本上就是我要写的东西。 – Tejs

+0

完美地工作。谢谢! – Tom

+0

'选项'不是一个实际的'数组',但是把它放在一边,数组上的可写长度属性有什么问题?它似乎提供了一种直观和简单的方法来清除阵列给我。 –

3

我只是用了同样的问题击中,发现对于我们这些方便的解决方案:

$(selectObject).empty(); 

我我已经使用jQuery 1.4.4在IE 7-9,FF 10.0和Chrome 18中测试了它。

1

问题是在纯粹的JavaScript,请提供第一个纯JavaScript回复。由于许多嵌入式解决方案不能使用jquery,所以用户不会对jquery感兴趣。