删除节点元素的跨浏览器方法是使用removeChild()
方法。
但是,这种方式需要我们精确地确定节点的父节点,如下所示:
myNodeToRemove.parentNode.removeChild(myNodeToRemove);
为什么浏览器没有使用更加面向对象的方式实现remove方法:
myNodeToRemove.remove();
remove()
方法从以下开始:
function remove(){
var parentNode = this.parentNode;
....
}
实际上,使用这种方式,无需手动获取节点的父节点。
答案 0 :(得分:1)
问题:
为什么浏览器没有像这样的面向对象的方式实现remove方法
myNodeToRemove.remove();
...您需要学习Javascript历史,语言是如何诞生的,API是如何诞生的等等。然后你就会明白我们如何最终得到了名为modern web的clusterfuck。历史很有趣。
开始的好地方是在Javascript视频上观看Crockford
http://javascript.crockford.com/#video
关于功能命名和面向对象的实践,这是一个很好的视频:
答案 1 :(得分:0)
我认为使用parentNode和removeChild组合的原因可以确保我们在要删除的容器的实际父级上引用removeChild方法。