我有一个选择列表:
<select id="sel">
<option>text1</option>
<option>text2</option>
<option>text3</option>
<option>text4</option>
</select>
我想删除所有项目,没有for
循环。
我试过了:
document.getElementById('sel').length = 0;
但这在某些浏览器中不起作用 有什么想法吗?
由于
答案 0 :(得分:7)
document.getElementById( 'sel' ).innerHTML = '';
您应该理解这样的length
属性更像是一个只读属性,它为您提供有关对象状态的信息。就像你得到一个数组的长度。但是,更改该值不会影响实际对象,而正确删除元素将导致浏览器重新呈现该元素的DOM(并因此更新该值)。我想有些浏览器可能会将长度设置为零来解释清除该对象,但通常不应该是预期的行为。另外我认为Element.length
实际上不是DOM规范的一部分。
要添加一些引用,核心DOM Element没有任何长度参数。 HTMLSelectElement和HTMLOptionsCollection(可通过HTMLSelectElement.options
访问)都有长度属性,但设置应该引发 DOMException
因此,在两种方式中,标准设置长度都是非法的,因此如果您想支持大多数浏览器,则不应使用。
答案 1 :(得分:4)
其中任何一项工作:
document.getElementById('sel').options.length = 0;
或
document.getElementById('sel').innerHTML = "";