代码之家  ›  专栏  ›  技术社区  ›  Silverspur

在这种情况下,json.parse()为什么会丢失一些对象?[复制品]

  •  0
  • Silverspur  · 技术社区  · 6 年前

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

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

    元素1。

    enter image description here

    元素2。

    enter image description here

    有问题。

    当我 console.log 这个 element S .children 他们显然还有些 HtmlCollection S

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

    如果你读了 小精灵 下面是元素的子元素,你会明白我在说什么…

    元素1子元素长度:

    enter image description here

    元素2子元素和长度:(混乱的一个)

    enter image description here

    有人知道这是怎么回事吗?

    如何解决这个问题,我需要通过htmlcollection循环,但它不允许我,因为长度是0…?

    提前谢谢! 感谢大家的帮助。

    0 回复  |  直到 8 年前
        1
  •  17
  •   Community CDub    8 年前

    当您将对象记录到控制台时,对象的当前状态不会被快照和显示(如您所料);相反,控制台将获得 实时参考 到目标。当您在控制台中展开它时,可以看到它的内容 当你展开它的时候 ,而不是在您登录时。更多关于这个的信息 this question and its answers .

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

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

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

    它说“左边的对象值在记录时是shapshot的,下面的值刚刚被计算过。”