我正在使用带有backbone和adobe air的javascript。在我的视图模型中,我有一个解析函数,它保存响应( 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有什么建议吗?
发布于 2011-07-26 01:37:23
您可能必须先调用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(零)迭代到这个值,这里发生的情况是,每次添加或删除一个子级时,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])https://stackoverflow.com/questions/6819930
复制相似问题