我有个问题。如何多次使用parentNode属性?

我知道我可以做这样的事情:

document.getElementById("mytag").parentNode.parentNode.remove();


或类似的东西。我的问题不是我可以添加更多或更少的.parentNode来删除想要删除的内容。

我的问题是我想创建一个用户友好的应用程序,用户可以在其中自行声明应删除多少parentNode。

起初,我尝试通过循环添加.parentNode。没用第二,我尝试使用eval()函数进行相同的操作。结果相同。

有没有一个很好的解决方案的人我该怎么做?如果有机会您只需要说出parentNodes的数量,这将非常有用。

这里有个小例子。我将“自动”完成的工作:

myFunction(..., ..., 3) {
    ...
    document.getElementById("mytag").parentNode.parentNode.parentNode.remove();
}


要么

myFunction(..., ..., 2) {
    ...
    document.getElementById("mytag").parentNode.parentNode.remove();
}


要么

myFunction(..., ..., 1) {
    ...
    document.getElementById("mytag").parentNode.remove();
}


非常感谢你。

我更喜欢纯JS解决方案。附加的jQuery解决方案也很好。

最佳答案

此功能应完成以下工作:

function removeParent(element, num) {
    var parent = element;
    for (var i = 0; i < num; i++) {
        if (parent.parentNode) {
            parent = parent.parentNode;
        }
    }
    parent.remove();
}


您可以在此页面上对其进行测试。例如,stackoverflow徽标。 HTML结构是这样的:

HTML
    HEAD
    BODY
        DIV.container
            DIV#header
                DIV#hlogo


打开控制台,复制粘贴功能,然后输入removeParent(hlogo, 4)。整个页面将消失:)

10-05 20:34
查看更多