Quelqu'un peut-il m'expliquer en termes aussi simples que possible, quelle est la différence entre le DOM parentNode classique et nouvellement introduit dans Firefox 9 parentElement
javascript
firefox
dom
shabunc
la source
la source
Réponses:
parentElement
est nouveau pour Firefox 9 et DOM4, mais il est présent dans tous les autres principaux navigateurs depuis des lustres.Dans la plupart des cas, c'est la même chose que
parentNode
. La seule différence survient lorsqu'un nœudparentNode
n'est pas un élément. Si oui,parentElement
c'estnull
.Par exemple:
Puisque l'
<html>
élément (document.documentElement
) n'a pas de parent qui est un élément,parentElement
estnull
. (Il y a d'autres cas, plus improbables, où celaparentElement
pourrait êtrenull
, mais vous ne les rencontrerez probablement jamais.)la source
parentElement
était une chose IE propriétaire; Je crois que d'autres navigateurs à l'époque (par exemple, Netscape) étaient pris en chargeparentNode
mais pasparentElement
. (Évidemment, étant donné que j'ai mentionné Netscape, je parle de retour à IE5 et plus tôt ...)documentfragment.firstChild.parentElement === null
circle
intérieur ag
), dans IE,parentElement
ne sera pas défini etparentNode
sera ce que vous recherchez. :(Dans Internet Explorer,
parentElement
n'est pas défini pour les éléments SVG, alors qu'ilparentNode
est défini.la source
parentElement
n'est pas implémenté pourNode
est bien connu ( developer.mozilla.org/en-US/docs/Web/API/Node/… ) mais pourSVGElement
? Je ne pouvais pas non plus reproduire cela avecdocument.createElement('svg').parentElement
IE 11.737.17763.0. Cela a-t-il été résolu entre-temps?Utilisez
.parentElement
et vous ne pouvez pas vous tromper tant que vous n'utilisez pas de fragments de document.Si vous utilisez des fragments de document, vous avez besoin de
.parentNode
:Aussi:
Apparemment , les
<html>
s ».parentNode
liens vers le document . Cela devrait être considéré comme une phase de décision car les documents ne sont pas des nœuds, car les nœuds sont définis pour être contenus par des documents et les documents ne peuvent pas être contenus par des documents.la source
Tout comme avec nextSibling et nextElementSibling , rappelez-vous juste que, les propriétés avec "élément" dans leur nom retournent toujours
Element
ounull
. Les propriétés sans peuvent renvoyer tout autre type de nœud.la source
il y a encore une différence, mais uniquement dans Internet Explorer. Cela se produit lorsque vous mélangez HTML et SVG. si le parent est «l'autre» de ces deux, alors .parentNode donne le parent, tandis que .parentElement donne undefined.
la source
undefined
nonnull
.