当前位置:  开发笔记 > 编程语言 > 正文

"for ... in ..."构造的奇怪行为

如何解决《"forin"构造的奇怪行为》经验,为你挑选了1个好方法。

我有一个带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'在这里意味着什么?



1> Magus..:

document.getElementById('myDiv').getElementsByTagName('input')不返回真正的数组.这是一个array like对象.所以函数喜欢forEachmap不存在.并for ... in ...得到了一个奇怪的行为.

您可以将其转换为真正的数组slice:

var elements = Array.prototype.slice.call(document.getElementById('myDiv').getElementsByTagName('input'));

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有