child.remove()和parent.removeChild(child)之间有什么区别?

时间:2015-08-05 21:48:46

标签: javascript

我能够在w3schools上找到javascript remove()函数的唯一参考是this page,声称该方法用于从选择中删除选项。但是,当我在Chrome和Firefox中测试它时,它在任何节点上调用它时显然可以正常工作。

这是新支持的吗?我过去总是要做child.parentNode.removeChild(child)这样的事情。使用一个优于另一个是否有任何好处/缺点?

2 个答案:

答案 0 :(得分:2)

HTMLSelectElement对象有remove方法。只有现代浏览器才支持该方法。它删除了html元素。

您所指的是HTMLElement实现option接口)对象的remove方法,它删除{{1通过索引。旧方法和新浏览器都支持该方法。如果不传递索引,select元素本身就会被删除。

答案 1 :(得分:0)

看看规范,他们似乎做了同样的事情。

https://dom.spec.whatwg.org/#dom-childnode-remove

  

remove()方法在调用时必须运行以下步骤:

     

如果上下文对象的父级为null,则终止这些步骤。

     

从上下文对象的父级中删除上下文对象。

最后一行似乎暗示它仍然这样做.parentNode.removeChild(child)。

https://dom.spec.whatwg.org/#dom-node-removechild

  

removeChild(child)方法必须返回从上下文对象中预删除子项的结果。

https://dom.spec.whatwg.org/#concept-node-pre-remove

  

要从父级中预删除子级,请运行以下步骤:

     

如果child的父级不是父级,则抛出NotFoundError异常。   从父母那里移除孩子。

     

归还孩子。

至于如果一方面有优势,我不确定是否存在优势。 (可能会有,但我找不到任何东西)这可能只取决于你的上下文中哪些更好的可读性。