在我的javascript中,我有两个元素。
我已经记录了两个元素,它显示了......
元素1。
元素2。
有问题。
当我console.log
element
s .children
时,他们显然会返回HtmlCollection
个
您将在一分钟内理解以下内容:但奇怪的是,一个HtmlCollection为空(并且长度为0),但有3个元素(并且长度为3)。
如果您为元素的孩子阅读了下面的console.log
,您将理解我在说什么......
元素1儿童&长度:
元素2儿童&长度:(搞砸了)
有谁知道这里发生了什么?
我如何解决这个问题,我需要通过HtmlCollection循环,但它不会让我因为长度是0 ......?
提前致谢! 所有帮助表示赞赏。
答案 0 :(得分:20)
当您将对象记录到控制台时,对象的当前状态不会被快照和显示(正如您所料);相反,控制台会为对象获取实时参考。当您在控制台中展开它时,您会看到其内容为,当您展开它时,而不是在您登录时的内容。有关详情,请参阅this question and its answers。
显然,当您进行日志记录时,您的集合是空的,然后在以后获取它们的元素。您只想让代码等到填充集合。例如,如果您在运行脚本时立即执行此操作,请考虑将脚本放在文档的末尾,就在结束</body>
标记之前。
对象旁边的非常微妙的蓝色(i)图标有一个有用的工具提示;如果你将它悬停,你会看到:
它说&#34;左边的对象值在记录时被破坏了,刚刚评估了下面的值。&#34;