簡體   English   中英

遞歸附加節點樹

[英]Recursive appending of Node tree

我試圖將節點樹附加到Dom上,通過createHTMLDocument創建dom樹,我的第一種方法是這樣的:(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復制沒有其后代的父節點,然后開始將其后代附加到該節點,如果其后代具有.....

所以我需要遞歸地執行此操作,但不幸的是我真的不知道如何,我很想看看一些例子:)

那么,您的問題是如何遞歸地遍歷您的節點樹以生成修改后的節點樹。 可以通過以下方式完成:

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是在每個節點上執行“一些更改”的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM