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

标签 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;

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

谢谢

最佳答案

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

移自评论:

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

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

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

关于javascript - document.getElementById ('' ).length = 0 在Win7下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859037/

相关文章:

sql - 不确定如何在 SQL Server 中订购它

vba - 如何更改集合中某个项目的值

java - 具有分隔值性能的列表

javascript - MVC - 多参数 Ajax 调用

javascript - 抛出新功能。Firebase 云功能上的 https.HttpsError 被客户端拒绝为内部错误

javascript - 检查 ISO 日期的日期

c# - 集合类型属性的 setter

javascript - webkit 粘性页脚菜单

mysql - 复杂的MySQL查询问题

Java hibernate org.hibernate.exception.SQLGrammarException : could not extract ResultSet on createSQLQuery