我试图将节点树附加到Dom上,dom树是通过createHTMLDocument创建的,我的第一种方法是这样的: (doc是节点树)
while(doc.head.children.length > 0){
iframewin.document.head.appendChild(doc.head.children[0]);
}
while(doc.body.children.length > 0){
iframewin.document.body.appendChild(doc.body.children[0]);
}
这种方法很好用,但是就我而言,在我附加每个节点之前,我需要能够在每个节点上进行一些更改,并且当我有一些带有后代的节点并且实际上是在附加整个节点时,就会出现问题带有其后代,因此我需要使用importNode复制不带其后代的父节点,然后开始将其后代附加到它,如果其后代具有.....
所以我需要递归地执行此操作,但不幸的是我真的不知道如何,我很想看看一些例子:)
答案 0 :(得分:0)
那么,您的问题是如何递归地遍历节点树以生成修改后的节点树。可以通过以下方式完成:
function transformTree(inputTree, outputTree) {
if (!inputTree.children) {
return;
}
for (let i = 0; i < inputTree.children.length; i++) {
var inputNode = inputTree.children[i];
var transformedNode = transformNode(inputNode);
// recursiveCall
tranformTree(inputNode, transformedNode);
outputTree.appendChild(transformedNode);
}
}
transformTree(doc.head, iframewin.document.head);
transformTree(doc.body, iframewin.document.body);
transformNode
是在每个节点上进行“一些更改”的功能。