在不知道父元素的情况下删除dom元素?

Mat*_*rym 34 javascript removechild

是否可以删除除body标签之外没有父元素的dom元素?我知道使用像jquery这样的框架会很容易,但我试图坚持直接的javascript.

这是我发现的代码,否则:

function removeElement(parentDiv, childDiv){
     if (childDiv == parentDiv) {
          alert("The parent div cannot be removed.");
     }
     else if (document.getElementById(childDiv)) {     
          var child = document.getElementById(childDiv);
          var parent = document.getElementById(parentDiv);
          parent.removeChild(child);
     }
     else {
          alert("Child div has already been removed or does not exist.");
          return false;
     }
}   
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ada*_*son 91

您应该能够获取元素的父元素,然后从中删除元素

function removeElement(el) {
el.parentNode.removeChild(el);
}
Run Code Online (Sandbox Code Playgroud)

更新

您可以将其设置为HTMLElement上的新方法:

HTMLElement.prototype.remove = function() { this.parentNode.removeChild(this); return this; }
Run Code Online (Sandbox Code Playgroud)

然后做el.remove()(这也将返回元素)


swe*_*rvo 19

childDiv.remove();
Run Code Online (Sandbox Code Playgroud)

适用于Chrome 25.0.1364.155

请注意,这在IE11或Opera Mini中不起作用,但所有其他浏览器都支持.

请参阅此处:caniuse上对childnode-remove的引用


Rob*_*t K 16

我想你可以做点像......

var child = document.getElementById(childDiv);
//var parent = document.getElementById(parentDiv);
child.parentNode.removeChild(child);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅node.parentNode.


Gre*_*ire 5

document.body.removeChild(child);
Run Code Online (Sandbox Code Playgroud)

  • @unknown:这个答案仅适用于`document.body`的直接后代的节点.其他答案适用于所有情况,包括`document.body`的后代. (2认同)