首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助避免HIERARCHY_REQUEST_ERR: DOM异常3错误

需要帮助避免HIERARCHY_REQUEST_ERR: DOM异常3错误
EN

Stack Overflow用户
提问于 2011-07-26 01:22:34
回答 1查看 5.7K关注 0票数 2

我正在使用带有backbone和adobe air的javascript。在我的视图模型中,我有一个解析函数,它保存响应( Dom对象),稍后,当用户点击保存时,我想向保存的响应添加几个节点,但我得到了Dom异常3,有帮助吗?下面是一些代码以供参考。

代码语言:javascript
复制
parse: function(resp, xhr){
       this.treeDoc = xhr.responseXML
       //parse routine
      }

以后,当用户想要保存时

代码语言:javascript
复制
var xmlTree = createMyXML(); //creates a sub xml tree
this.treeDoc.appendChild(xmlTree ); //DOM Error 3 thrown

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-26 01:37:23

您可能必须先调用adoptNode:

代码语言:javascript
复制
this.treeDoc.adoptNode(newElements);

然后附加到一个子节点,如下所示:

代码语言:javascript
复制
this.treeDoc.documentElement.firstChild.appendChild(newElements);

此外,如果newElements是一个由新元素组成的数组(顾名思义),则需要遍历它。

有关详细信息,请参阅https://developer.mozilla.org/en/DOM/document

对你的评论的回复(评论本身太大了):

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

代码语言:javascript
复制
while(node.childNodes.length > 0) node.removeChild(node.childNodes[0])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6819930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档