Czy ktoś może mi wyjaśnić tak prosto, jak to możliwe, jaka jest różnica między klasycznym DOM ParentNode a nowo wprowadzonym w Firefox 9 parentElement
javascript
firefox
dom
shabunc
źródło
źródło
Odpowiedzi:
parentElement
jest nowy w Firefoksie 9 i DOM4, ale był obecny we wszystkich innych głównych przeglądarkach od wieków.W większości przypadków jest to to samo co
parentNode
. Jedyna różnica pojawia się, gdy węzełparentNode
nie jest elementem. Jeśli tak,parentElement
to jestnull
.Jako przykład:
Ponieważ
<html>
element (document.documentElement
) nie ma elementu nadrzędnego, który jest elementem,parentElement
jestnull
. (Są inne, bardziej mało prawdopodobne, przypadki, w którychparentElement
mogą byćnull
, ale prawdopodobnie nigdy ich nie spotkasz).źródło
parentElement
był zastrzeżoną rzeczą IE; Wierzę, że inne przeglądarki w tym czasie (np. Netscape) były obsługiwane,parentNode
ale nieparentElement
. (Oczywiście, biorąc pod uwagę, że wspomniałem o Netscape, mówię o drodze powrotnej do IE5 i wcześniejszych ...)documentfragment.firstChild.parentElement === null
circle
wnętrze ag
) w IEparentElement
będzie niezdefiniowany iparentNode
będzie tym, czego szukasz. :(W Internet Explorerze
parentElement
jest niezdefiniowany dla elementów SVG, natomiastparentNode
jest zdefiniowany.źródło
parentElement
niewdrożenieNode
jest dobrze znane ( developer.mozilla.org/en-US/docs/Web/API/Node/… ), ale dlaSVGElement
? Nie mogłem również odtworzyć tegodocument.createElement('svg').parentElement
w IE 11.737.17763.0. Czy w międzyczasie można to naprawić?Użyj
.parentElement
i nie możesz się pomylić, dopóki nie korzystasz z fragmentów dokumentu.Jeśli korzystasz z fragmentów dokumentów, potrzebujesz
.parentNode
:Również:
Widocznie
<html>
„s.parentNode
linki do Dokumentu . Należy to uznać za decyzję, ponieważ dokumenty nie są węzłami, ponieważ węzły są zdefiniowane jako zawierające dokumenty i dokumenty nie mogą być zawarte w dokumentach.źródło
Podobnie jak w przypadku nextSibling i nextElementSibling , pamiętaj tylko, że właściwości z „elementem” w nazwie zawsze zwracają
Element
lubnull
. Właściwości bez mogą zwracać dowolny inny rodzaj węzła.źródło
jest jeszcze jedna różnica, ale tylko w Internet Explorerze. Występuje podczas mieszania HTML i SVG. jeśli rodzic jest „drugim” z tych dwóch, to .parentNode daje rodzicowi, a .parentElement daje niezdefiniowany.
źródło
undefined
nienull
.