Kann mir jemand so einfach wie möglich erklären, was der Unterschied zwischen klassischem DOM parentNode und neu in Firefox 9 parentElement neu eingeführt ist
javascript
firefox
dom
shabunc
quelle
quelle
Antworten:
parentElement
ist neu in Firefox 9 und in DOM4, aber es ist seit Ewigkeiten in allen anderen gängigen Browsern vorhanden.In den meisten Fällen ist es dasselbe wie
parentNode
. Der einzige Unterschied besteht darin, dass ein KnotenparentNode
kein Element ist. Wenn ja,parentElement
istnull
.Als Beispiel:
Da das
<html>
Element (document.documentElement
) kein übergeordnetes Element hat,parentElement
ist es ein Elementnull
. (Es gibt andere, eher unwahrscheinliche Fälle, in denenparentElement
dies der Fall sein könntenull
, aber Sie werden wahrscheinlich nie auf sie stoßen.)quelle
parentElement
war eine proprietäre IE-Sache; Ich glaube, dass andere Browser zu der Zeit (z. B. Netscape) unterstützt werden,parentNode
aber nichtparentElement
. (Angesichts der Tatsache, dass ich Netscape erwähnt habe, spreche ich natürlich von einem Weg zurück zu IE5 und früher ...)documentfragment.firstChild.parentElement === null
circle
Inside-Ag
) im IEparentElement
undefiniert undparentNode
genau das, wonach Sie suchen. :(In Internet Explorer
parentElement
ist für SVG-Elemente undefiniert, währendparentNode
definiert ist.quelle
parentElement
Nicht implementiert zu seinNode
ist bekannt ( developer.mozilla.org/en-US/docs/Web/API/Node/… ), aber fürSVGElement
? Ich konnte dies auch nicht mitdocument.createElement('svg').parentElement
in IE 11.737.17763.0 reproduzieren. Wurde das vielleicht in der Zwischenzeit behoben?Verwenden
.parentElement
Sie und Sie können nichts falsch machen, solange Sie keine Dokumentfragmente verwenden.Wenn Sie Dokumentfragmente verwenden, benötigen Sie
.parentNode
:Ebenfalls:
Anscheinend ist die
<html>
s‘.parentNode
Links zu dem Dokument . Dies sollte als Entscheidungsfehler angesehen werden, da Dokumente keine Knoten sind, da Knoten als in Dokumenten enthalten definiert sind und Dokumente nicht in Dokumenten enthalten sein können.quelle
Denken Sie genau wie bei nextSibling und nextElementSibling daran, dass Eigenschaften mit "element" im Namen immer
Element
oder zurückgebennull
. Eigenschaften ohne können jede andere Art von Knoten zurückgeben.quelle
Es gibt noch einen Unterschied, aber nur im Internet Explorer. Es tritt auf, wenn Sie HTML und SVG mischen. Wenn das übergeordnete Element das 'andere' dieser beiden Elemente ist, gibt .parentNode das übergeordnete Element an, während .parentElement undefiniert angibt.
quelle
undefined
nichtnull
.