小编lyo*_*yon的帖子

递归删除javascript中的所有嵌套节点

我一直在尝试编写一些东西来删除元素中的所有节点,包括这些节点中的节点。我觉得我已经很接近这个了

function clear(node) {
    var l = node.childNodes.length;
    for (var i = 0; i < l; i++) {
        console.log(i, node.childNodes);
        var child = node.childNodes[i];

        if (!child.hasChildNodes()) {
            var newchild = child.parentNode;
            newchild.removeChild(child);
            console.log("removed" + child);
            clear(newchild);
        } else {
            clear(child);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

标记看起来像这样

<div>
    <canvas></canvas>
    <div id="diagbox">
        <div id="diag_text">Here's some text</div>
    </div>
    <ul id="option_ul">
        <li>Some text</li>
        <li>Some text</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

这是失败前的距离:

<div>
    <div id="diagbox">
        <div id="diag_text"></div>
    </div>
    <ul id="option_ul">
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

它删除了 diag_text 中的文本节点,但未能删除实际的 div。它还删除了 li 元素中的文本节点,并且由于某种原因也成功删除了 li 元素,但在 …

javascript recursion dom

4
推荐指数
1
解决办法
5165
查看次数

标签 统计

dom ×1

javascript ×1

recursion ×1