¿Alguien puede explicarme en términos lo más simples posibles, cuál es la diferencia entre el DOM parentNode clásico y el recién introducido en Firefox 9 parentElement
javascript
firefox
dom
shabunc
fuente
fuente
Respuestas:
parentElement
es nuevo en Firefox 9 y DOM4, pero ha estado presente en todos los demás navegadores importantes durante años.En la mayoría de los casos, es lo mismo que
parentNode
. La única diferencia viene cuando un nodoparentNode
no es un elemento. Si es así,parentElement
esnull
.Como ejemplo:
Dado que el
<html>
elemento (document.documentElement
) no tiene un elemento primario que sea un elemento,parentElement
esnull
. (Hay otros casos, más improbables, en los queparentElement
podría habernull
, pero probablemente nunca los encontrará).fuente
parentElement
era una cosa propietaria de IE; Creo que otros navegadores en ese momento (por ejemplo, Netscape) admitíanparentNode
pero noparentElement
. (Obviamente, dado que he mencionado Netscape, estoy hablando de volver manera de IE5 y anteriores ...)documentfragment.firstChild.parentElement === null
circle
inside ag
), en IE,parentElement
no estará definido, yparentNode
será lo que estás buscando. :(En Internet Explorer,
parentElement
no está definido para elementos SVG, mientras queparentNode
está definido.fuente
parentElement
no se implementa paraNode
es bien conocido ( developer.mozilla.org/en-US/docs/Web/API/Node/… ) pero paraSVGElement
? Tampoco pude reproducir estodocument.createElement('svg').parentElement
en IE 11.737.17763.0. ¿Se solucionó esto mientras tanto?Use
.parentElement
y no puede equivocarse mientras no esté usando fragmentos de documentos.Si usa fragmentos de documentos, entonces necesita
.parentNode
:También:
Aparentemente los enlaces de
<html>
's.parentNode
al documento . Esto se debe considerar un proceso de decisión ya que los documentos no son nodos, ya que los nodos están definidos para que los documentos puedan contenerlos y los documentos no pueden estar contenidos en ellos.fuente
Al igual que con nextSibling y nextElementSibling , solo recuerde que las propiedades con "elemento" en su nombre siempre devuelven
Element
onull
. Las propiedades sin pueden devolver cualquier otro tipo de nodo.fuente
Hay una diferencia más, pero solo en Internet Explorer. Ocurre cuando mezclas HTML y SVG. si el padre es el 'otro' de esos dos, entonces .parentNode da el padre, mientras que .parentElement da indefinido.
fuente
undefined
no lo esnull
.