javascript - 需要帮助避免 HIERARCHY_REQUEST_ERR : DOM Exception 3 error

标签 javascript xml backbone.js

我正在使用带有 backbone 和 adobe air 的 javascript。在我的 View 模型中,我有一个解析函数,它保存响应(Dom 对象),稍后,当用户点击保存时,我想向保存的响应添加几个节点,但我得到 Dom 异常 3,任何帮助?这里有一些代码供引用。

parse: function(resp, xhr){
       this.treeDoc = xhr.responseXML
       //parse routine
      }

在路上的某个地方,当用户想要保存时

var xmlTree = createMyXML(); //creates a sub xml tree
this.treeDoc.appendChild(xmlTree ); //DOM Error 3 thrown

有什么建议吗?

最佳答案

您可能必须先调用 adoptNode:

this.treeDoc.adoptNode(newElements);

然后附加到子节点,如:

this.treeDoc.documentElement.firstChild.appendChild(newElements);

此外,如果 newElements 是一个新元素数组(如名称所示),您将需要遍历它。

参见 https://developer.mozilla.org/en/DOM/document了解更多信息。

对您的评论的回答(它本身就太庞大了):

即使我没有重现错误,我想我也知道您为什么会遇到这个错误。错误 8 是 NOT_FOUND_ERR 的代码。猜猜你保存了 childNodes.length 的值并从 0(零)迭代到这个值,这里发生的是每次添加 child 时更新 childNodes 数组或删除,然后在循环中的某个点 i 实际上大于 childNodes.length(但不大于保存的值)导致 childNodes[i] 返回 undefined。并且由于 undefined 不是引用节点的子节点,因此抛出 NOT_FOUND_ERR(代码 8)。为了避免这种情况,只需对代码进行微小更改,只需将 childNodes.length-1 的初始值迭代为 0(零),或者只需执行以下操作:

while(node.childNodes.length > 0) node.removeChild(node.childNodes[0])

关于javascript - 需要帮助避免 HIERARCHY_REQUEST_ERR : DOM Exception 3 error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819930/

相关文章:

javascript - Vim 自动生成不需要的 JS 注释 block

javascript - 为什么数组要倒着写?

javascript - 使用 innerHTML 显示的动态 div 与现有的静态内容重叠

xml - 通过在 Xpath 中动态传递节点名称来获取节点值

c# - 使用 XadES-BES 算法通过 XMLDSIG 进行 XML 验证

javascript - symfony2如何通过javascript访问twig路径

java - FasterXML/jackson-dataformat-xml反序列化混合有序标签

javascript - 布局和 View 管理

javascript - 在组件所有者中存储 React.js 状态

jquery - 如何将 colorbox 与 base64 图像一起使用?