我有一个嵌套了许多div的网页。如何删除除1之外的所有具有特定ID的元素及其子元素。

我想保留该div及其子级,并删除其他所有内容,甚至包括其父级

以下代码不起作用,它也删除了子代

var elms = document.getElementsByTagName('*');
for (var i = 0; i < elms.length; i++) {
    if (elms[i].id != "div63") {
        elms[i].parentNode.removeChild(elms[i])
    }
};

我想要一个非jQuery解决方案。

最佳答案

您可以保存对节点的引用,删除所有引用,然后将节点放入正文中:

var saved = document.getElementById('div63');
var elms = document.body.childNodes;
while (elms.length) document.body.removeChild(elms[0]);
document.body.appendChild(saved);

Demonstration

07-24 17:47