【问题标题】:Why can't JavaScript append a node to hierarchy from code?为什么 JavaScript 不能将节点从代码附加到层次结构?
【发布时间】:2017-07-11 00:01:32
【问题描述】:

在我正在编写的网络应用程序中,我收到此错误:

HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy

当我 appendChild() 一个节点到 DOM 中的另一个点时会发生这种情况。

我很难弄清楚这一点。虽然我有一个可重现的案例,但对我来说它为什么会发生在这里没有意义。如果我从浏览器开发工具中执行完全相同的操作,它运行良好。但是,当代码从 JavaScript 文件执行时,会遇到错误。

在线搜索发现其他人有类似问题但没有解决方案。你会说什么?

谢谢! :)

更新:抱歉之前没写代码,我写的地方关门了。

导致错误的确切行如下。如果我将其注释掉,代码运行良好:

document.getElementById(creature_name).appendChild(creature_array[nearestNeighbor]);

// creature_name is the ID of an SVG <g> element. creature_array[nearestNeighbor] is another SVG element, which should get moved to within the <g>.

我已手动将同一个孩子移动到层次结构的同一部分。我已经使用调试器和 DOM 检查器进行了调查,但无法找到问题的原因。

更多代码会有帮助吗?这是一个开源项目,所以我可以尽可能多地分享。这是我在这里的第一个问题,所以请原谅我的新手错误!

更新 2:对于以后遇到此问题的任何人,事实证明,在我的情况下,我阻止了节点尝试追加自身,但没有阻止节点尝试将其父节点追加为子节点,这导致错误。 (尝试将节点附加到自身也会失败。)

【问题讨论】:

  • 这两个节点是什么,它们的关系是什么?请提供minimal reproducible example,否则我们无法真正帮助您。
  • 节点在哪里? DOM 中的点在哪里?一个代码示例将不胜感激。
  • 你能展示可重现的案例吗?没有一些代码很难做出猜测。
  • 阅读人们为您提供的有关最小示例的链接。我们无法从您发布的内容中重现您的问题。

标签: javascript dom hierarchy appendchild


【解决方案1】:

我发现在我的情况下,我阻止了节点尝试追加自身,但没有阻止节点尝试将其父节点追加为子节点,这导致了错误。 (尝试将节点附加到自身也会失败。)

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    相关资源
    最近更新 更多