element.children的console.log显示0长度,但稍后展开时有三个条目

时间:2016-07-29 14:03:20

标签: javascript html htmlcollection

在我的javascript中,我有两个元素。

我已经记录了两个元素,它显示了......

元素1。

enter image description here

元素2。

enter image description here

有问题。

当我console.log element s .children时,他们显然会返回HtmlCollection

您将在一分钟内理解以下内容:但奇怪的是,一个HtmlCollection为空(并且长度为0),但有3个元素(并且长度为3)。

如果您为元素的孩子阅读了下面的console.log,您将理解我在说什么......

元素1儿童&长度:

enter image description here

元素2儿童&长度:(搞砸了)

enter image description here

有谁知道这里发生了什么?

我如何解决这个问题,我需要通过HtmlCollection循环,但它不会让我因为长度是0 ......?

提前致谢! 所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:20)

当您将对象记录到控制台时,对象的当前状态不会被快照和显示(正如您所料);相反,控制台会为对象获取实时参考。当您在控制台中展开它时,您会看到其内容为,当您展开它时,而不是在您登录时的内容。有关详情,请参阅this question and its answers

显然,当您进行日志记录时,您的集合是空的,然后在以后获取它们的元素。您只想让代码等到填充集合。例如,如果您在运行脚本时立即执行此操作,请考虑将脚本放在文档的末尾,就在结束</body>标记之前。

对象旁边的非常微妙的蓝色(i)图标有一个有用的工具提示;如果你将它悬停,你会看到:

Tooltip saying "Object value at left was shapshotted when logged, value below was evaluated just now."

它说&#34;左边的对象值在记录时被破坏了,刚刚评估了下面的值。&#34;