Javascript 在哪些情况下,HTML DOM中的element.parentElement或element.parentNode将为null?

Javascript 在哪些情况下,HTML DOM中的element.parentElement或element.parentNode将为null?,javascript,html,web-component,lit-html,Javascript,Html,Web Component,Lit Html,我已经使用LitHTML和我自己的基于bloc的状态管理库创建了自定义元素。 现在我偶然发现了一个例子,在一个元素中,尽管在其他一些元素中非常好,但parentNode和parentElement返回null。 我不明白为什么 什么情况下parentNode和parentElement为null?查询返回的元素c没有parentElement,但它有一个parentNode,它是影子根 shadowRoot没有parentNode属性(这就是为什么c.parentNode.parentNode

我已经使用LitHTML和我自己的基于bloc的状态管理库创建了自定义元素。 现在我偶然发现了一个例子,在一个元素中,尽管在其他一些元素中非常好,但parentNode和parentElement返回null。 我不明白为什么


什么情况下parentNode和parentElement为null?

查询返回的元素
c
没有
parentElement
,但它有一个
parentNode
,它是
影子根

shadowRoot没有
parentNode
属性(这就是为什么
c.parentNode.parentNode
调用返回
null
),但是您可以通过访问shadowRoot
host
属性(
c.parentNode.host
)返回
shadowRoot
附加的元素

见文件:


或相关问题:

c
没有parentElement,但它有一个parentNode,它是shadowRoot。shadowRoot没有parentNode属性(
c.parentNode.parentNode
),但要访问shadowRoot附加到的元素,可以使用
.host
c.parentNode.host
)。请看:,或@pilchard是的,您是正确的,请将其作为答案写下来,我将接受它作为问题的解决方案。使用getRootNode。另请参见@Danny'365CSI'Engelman,普通节点上的getRootNode将直接获取一个文档节点。作为逻辑的一部分,我遍历每个节点并检查每个节点的属性。酷,请添加您的代码以便其他人可以学习