我有一个选择列表:
<select id="sel">
<option>text1</option>
<option>text2</option>
<option>text3</option>
<option>text4</option>
</select>
我想删除所有项目,而不使用 for
循环。
我尝试过:
document.getElementById('sel').length = 0;
但这在某些浏览器中不起作用。
有什么想法吗?
谢谢
最佳答案
document.getElementById( 'sel' ).innerHTML = '';
移自评论:
您应该将这样的 length
属性理解为更像一个只读属性,它为您提供有关对象状态的信息。就像当你获取数组的长度时一样。然而,更改该值不会影响实际对象,而正确删除元素将导致浏览器重新渲染该元素的 DOM(并因此更新值)。我想某些浏览器可能会解释将长度设置为零将清除该对象,但一般来说这不应该是预期的行为。另外我认为 Element.length
实际上不是 DOM 规范的一部分。
要添加一些对此的引用,核心 DOM Element没有任何长度参数。两者都是HTMLSelectElement和 HTMLOptionsCollection (可以通过 HTMLSelectElement.options
访问)具有长度属性,但设置它应该引发DOMException。
因此,根据标准,这两种方式设置长度都是非法的,因此如果您想支持大多数浏览器,则不应使用。
关于javascript - document.getElementById ('' ).length = 0 在Win7下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859037/