为什么 JavaScript 不能从代码将节点附加到层次结构中?



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

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:对于以后遇到此问题的任何人,事实证明,就我而言,我已经阻止了节点尝试附加自身,但没有阻止节点尝试将其父节点作为子节点附加,这导致了错误。(尝试将节点附加到自身也会失败。

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

最新更新