DOM parentNode和parentElement之间的区别

有人可以用尽可能简单的方式解释我吗,经典DOM parentNode和Firefox 9 parentElement中新引入的有什么区别?

YLD2020/03/13 15:22:43

在Internet Explorer中,parentElement未定义SVG元素,而已parentNode定义。

LEY小卤蛋2020/03/13 15:22:43

还有一个区别,但仅在Internet Explorer中。当您混合使用HTML和SVG时会发生这种情况。如果父级是这两个的“其他”,则.parentNode给出父级,而.parentElement给出未定义。

TonyJinJin泡芙2020/03/13 15:22:43

parentElement 是Firefox 9和DOM4的新功能,但是它已经存在于所有其他主流浏览器中已有很长时间了。

在大多数情况下,它与相同parentNode唯一的区别是节点parentNode不是元素时。如果是,parentElement则为null

举个例子:

document.body.parentNode; // the <html> element
document.body.parentElement; // the <html> element

document.documentElement.parentNode; // the document node
document.documentElement.parentElement; // null

(document.documentElement.parentNode === document);  // true
(document.documentElement.parentElement === document);  // false

由于<html>element(document.documentElement)没有作为元素的父元素,因此parentElementis null(还有其他可能性较小的情况parentElement可能是null,但您可能永远都不会遇到它们。)