为什么<select>
和<div>
元素的.length
不同?
<select id="select"></select>
<div id="myDiv">My div!
<div></div>
</div>
var select = document.getElementById('select');
var myDiv = document.getElementById('myDiv');
console.log(select.length); // 0
console.log(myDiv.length); // undefined
为什么带有选项的select
有length > 0
,如果它有选项;但同样的情况不适用于div
元素吗?
答案 0 :(得分:1)
我们checkout the docs for Element.length
length
返回NodeList中的项目数。
和
尽管此页面位于引用中,但length不是Element的属性,而是NodeList的属性。 NodeList对象是从许多DOM方法返回的,例如document.getElementsByTagName。
所以document.getElementById
返回一个节点,不返回NodeList
。因此,单个节点上的length
属性为undefined
。
您可能希望测量儿童列表的长度。
console.log(select.children.length);
最后,according to the docs HTMLSelectElement
实现了length
的版本,MDN将其定义为:
此select元素中的元素数。
不的其他类型的大多数元素都具有此属性。这只是HTMLSelectElement
的属性。
答案 1 :(得分:0)
stands,getElementById()
返回元素。
并非所有元素都具有length的概念(定义此类属性)。