javascript options.length=0在IE9中不起作用

javascript options.length=0在IE9中不起作用,javascript,internet-explorer-9,Javascript,Internet Explorer 9,我有一个页面,在添加新选项之前将选择列表的长度设置为0。这在IE9之前的所有浏览器中都能正常工作。在IE9中,我得到一个错误:DOM异常:NOT\u FOUND\u ERR(8)。这就是我想要做的: var typebox = document.sForm.ePosition; typebox.options.length = 0; 在兼容模式下工作正常。尝试在控制台中执行每一部分,并查看异常情况: document.sForm document.sForm.ePosition documen

我有一个页面,在添加新选项之前将选择列表的长度设置为0。这在IE9之前的所有浏览器中都能正常工作。在IE9中,我得到一个错误:DOM异常:NOT\u FOUND\u ERR(8)。这就是我想要做的:

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

在兼容模式下工作正常。

尝试在控制台中执行每一部分,并查看异常情况:

document.sForm
document.sForm.ePosition
document.sForm.ePosition.options
document.sForm.ePosition.options.length
我试着将选项的长度设置为0,但很惊讶(在Chrome中)它能起作用<在我看来,code>Array.length应该是只读属性。我将使用DOM代码删除元素,类似这样:

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

我刚刚被同样的问题所震惊,并为我们这些使用jQuery的人找到了一个方便的解决方案:

$(selectObject).empty();

我已经使用jQuery 1.4.4在IE 7-9、FF 10.0和Chrome 18中对此进行了测试。

问题是纯javascript,请首先提供纯javascript回复。用户可能对jquery不感兴趣,因为许多嵌入式解决方案都不能使用jquery。

那么基本上您是想在添加项之前删除选择框的所有元素?如果是这样,那不是最好的办法。给我一些指点。另一种方法是什么?见@Seth的答案;您应该通过代码删除元素。
选项
不是实际的
数组
,但撇开它不谈,数组上的可写
长度
属性有什么问题?它似乎为我提供了一种直观而简单的方法来清除数组。@蒂姆:将数组的长度从10设置为5显然会使数组变短,但对我来说,这并不明显。例如,很明显,您正在截断数组,但您是从前面还是从后面截断?可能是最后添加的5项?我认为更清楚的是使用数组变异方法,如
pop
push
,等等。另外,对于其他对象(如函数),长度是只读的。它只是感觉不应该是可写的。(我没有意识到这不是一个实际的
数组
)。很公平。我已经处理JS数组很久了,我不确定我能不能再客观地判断它们了。