如何使用JavaScript删除HTML中的子节点?

时间:2008-08-17 17:48:04

标签: javascript html dom

是否有像document.getElementById("FirstDiv").clear()这样的函数?

9 个答案:

答案 0 :(得分:97)

要回答原始问题 - 有多种方法可以做到这一点,但以下内容最简单。

如果您已经拥有要删除的子节点的句柄,即您有一个包含对它的引用的JavaScript变量:

myChildNode.parentNode.removeChild(myChildNode);

显然,如果您没有使用已经执行此操作的众多库中的一个,您可能需要创建一个函数来抽象出来:

function removeElement(node) {
    node.parentNode.removeChild(node);
}

编辑:正如其他人所提到的:如果你有任何事件处理程序连接到你要移除的节点,你需要确保在最后一个被删除节点的引用超出范围之前断开它们,以免JavaScript解释器漏洞内存的执行不佳。

答案 1 :(得分:46)

如果要清除div并删除所有子节点,可以输入:

var mydiv = document.getElementById('FirstDiv');
while(mydiv.firstChild) {
  mydiv.removeChild(mydiv.firstChild);
}

答案 2 :(得分:8)

targetNode.remove()

这是W3C在2015年底推荐的,并且 vanilla JS 。比以前的方法更好/更清洁。

对于您的用例:

if (!('remove' in Element.prototype)) {
    Element.prototype.remove = function() {
        if (this.parentNode) {
            this.parentNode.removeChild(this);
        }
    };
}

如果您需要填充物以确保向后兼容性:

{{1}}

PyObject_GC_Del

Mozilla Docs - 2018年3月的92%

答案 3 :(得分:4)

您必须删除在删除节点之前在节点上设置的所有事件处理程序,以避免IE中的内存泄漏

答案 4 :(得分:3)

jQuery解决方案

<强> HTML

<select id="foo">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

<强>的Javascript

// remove child "option" element with a "value" attribute equal to "2"
$("#foo > option[value='2']").remove();

// remove all child "option" elements
$("#foo > option").remove();

参考文献:

Attribute Equals Selector [name=value]

  

选择具有的元素   带有值的指定属性   完全等于某个值。

Child Selector (“parent > child”)

  

选择所有直接子元素   由元素的“子”指定   由“父母”指定

.remove()

  

与.empty()类似,.remove()   方法从DOM中获取元素。   我们在需要时使用.remove()   删除元素本身,以及   里面的一切。此外   所有元素本身都受到约束   与之关联的事件和jQuery数据   元素被删除。

答案 5 :(得分:2)

使用以下代码:

//for Internet Explorer
document.getElementById("FirstDiv").removeNode(true);

//for other browsers
var fDiv = document.getElementById("FirstDiv");
fDiv.removeChild(fDiv.childNodes[0]); //first check on which node your required node exists, if it is on [0] use this, otherwise use where it exists.

答案 6 :(得分:1)

INSERT INTO `mydb`.`categories` (`name`, `parentid`)
    VALUES ('groceries', NULL),
           ('snacks', NULL);

p是父节点,c是子节点
parentNode是一个JavaScript变量,包含父引用

易于理解

答案 7 :(得分:0)

您应该能够使用节点的.RemoveNode方法或父节点的.RemoveChild方法。

答案 8 :(得分:0)

您应该使用JavaScript库来执行此类操作。

例如,MochiKit有一个函数removeElement,jQuery有remove