document.getElementById('')。length = 0在Win7下不起作用

时间:2010-05-18 16:14:14

标签: javascript select collections

我有一个选择列表:

<select id="sel">
     <option>text1</option>
     <option>text2</option>
     <option>text3</option>
     <option>text4</option>
</select>

我想删除所有项目,没有for循环。 我试过了:

document.getElementById('sel').length = 0;

但这在某些浏览器中不起作用 有什么想法吗?

由于

2 个答案:

答案 0 :(得分:7)

document.getElementById( 'sel' ).innerHTML = '';

从评论中移出:

您应该理解这样的length属性更像是一个只读属性,它为您提供有关对象状态的信息。就像你得到一个数组的长度。但是,更改该值不会影响实际对象,而正确删除元素将导致浏览器重新呈现该元素的DOM(并因此更新该值)。我想有些浏览器可能会将长度设置为零来解释清除该对象,但通常不应该是预期的行为。另外我认为Element.length实际上不是DOM规范的一部分。

要添加一些引用,核心DOM Element没有任何长度参数。 HTMLSelectElementHTMLOptionsCollection(可通过HTMLSelectElement.options访问)都有长度属性,但设置应该引发 DOMException

因此,在两种方式中,标准设置长度都是非法的,因此如果您想支持大多数浏览器,则不应使用。

答案 1 :(得分:4)

其中任何一项工作:

document.getElementById('sel').options.length = 0;

document.getElementById('sel').innerHTML = "";