我有一个带4个复选框的div。然后我运行以下javascript:
var elements = document.getElementById('myDiv').getElementsByTagName('input');
alert(elements.length); // output: 4
for (element in elements) {
alert(element);
}
alert('finish!');
在4之后,我按顺序收到以下警告:
0
1
2
3
item
namedItem
length
finish!
从0到3的数字是元素的索引。但是'item','namedItem'和'length'在这里是什么意思?
答案 0 :(得分:5)
document.getElementById('myDiv').getElementsByTagName('input')
不会返回真正的数组。它是一个array like
对象。因此,forEach
和map
等函数不存在。 for ... in ...
有一种奇怪的行为。
您可以使用slice
将其转换为真实数组:
var elements = Array.prototype.slice.call(document.getElementById('myDiv').getElementsByTagName('input'));
答案 1 :(得分:0)
http://www.w3schools.com/jsref/coll_form_elements.asp 如此链接所示,您将输出输入元素的属性和方法。
答案 2 :(得分:-1)
elements
不是javascript数组,它是一个类似数组的对象。它实际上是HTMLCollection,它具有一些额外的可枚举属性。
for ... in语句迭代对象的可枚举属性。