为了账号安全,请及时绑定邮箱和手机立即绑定

DOM parentNode和parentElement之间的区别

DOM parentNode和parentElement之间的区别

慕盖茨4494581 2019-12-09 09:41:18
有人可以用尽可能简单的方式解释我吗,经典DOM parentNode和Firefox 9 parentElement中新引入的有什么区别?
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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>元素(document.documentElement)没有作为元素的父元素,因此parentElement为null。(还有其他更不可能的情况,parentElement可能是null,但您可能永远不会遇到它们。)


查看完整回答
反对 回复 2019-12-09
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-12-09
?
PIPIONE

TA贡献1829条经验 获得超9个赞

使用.parentElement,只要不使用文档片段,就不会出错。


如果使用文档片段,则需要.parentNode:


let div = document.createDocumentFragment().appendChild(document.createElement('div'));

div.parentElement // null

div.parentNode // document fragment

也:


let div = document.getElementById('t').content.firstChild

div.parentElement // null

div.parentNode // document fragment

<template id="t"><div></div></template>

显然,该文档<html>.parentNode链接。由于文档不是节点,因此应将其视为决策重点,因为节点被定义为可包含在文档中,而文档不能包含在文档中。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 1767 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号