--- title: NonDocumentTypeChildNode.previousElementSibling slug: Web/API/NonDocumentTypeChildNode/previousElementSibling translation_of: Web/API/NonDocumentTypeChildNode/previousElementSibling ---
La propiedad de sólo lectura NonDocumentTypeChildNode.previousElementSibling
retorna el {{domxref("Element")}} predecesor inmediato al especificado dentro de la lista de hijos de su padre, o bien null
si el elemento especificado es el primero de dicha lista.
prevNode = elementNodeReference.previousElementSibling;
<div id="div-01">Aquí está div-01</div> <div id="div-02">Aquí está div-02</div> <li>Esto es un elemento de lista</li> <li>Esto es otro elemento de lista</li> <div id="div-03">Aquí esta div-03</div> <script> var el = document.getElementById('div-03').previousElementSibling; document.write('<p>Hermanos de div-03</p><ol>'); while (el) { document.write('<li>' + el.nodeName + '</li>'); el = el.previousElementSibling; } document.write('</ol>'); </script>
Este ejemplo muestra lo siguiente en la página cuando carga:
Hermanos de div-03 1. LI 2. LI 3. DIV 4. DIV
Esta propiedad no está soportada con anterioridad a IE9, así que puede utilizarse el siguiente fragmento para añadri el soporte a IE8:
// Source: https://github.com/Alhadis/Snippets/blob/master/js/polyfills/IE8-child-elements.js if(!("previousElementSibling" in document.documentElement)){ Object.defineProperty(Element.prototype, "previousElementSibling", { get: function(){ var e = this.previousSibling; while(e && 1 !== e.nodeType) e = e.previousSibling; return e; } }); }
Especificación | Estado | Observaciones |
---|---|---|
{{SpecName('DOM WHATWG', '#dom-nondocumenttypechildnode-previouselementsibling', 'NonDocumentTypeChildNode.previousElementSibling')}} | {{Spec2('DOM WHATWG')}} | Dividió el interfaz ElementTraversal en {{domxref("ChildNode")}}, {{domxref("ParentNode")}}, y {{domxref("NonDocumentTypeChildNode")}}. Este método queda ahora definida en el primero.Los interfaces {{domxref("Element")}} y {{domxref("CharacterData")}} implementaron la nueva interfaz. |
{{SpecName('Element Traversal', '#attribute-previousElementSibling', 'ElementTraversal.previousElementSibling')}} | {{Spec2('Element Traversal')}} | Añadida su definición inicial al interfaz puro ElementTraversal y lo usa en {{domxref("Element")}}. |
Prestación | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Soporte básico (en {{domxref("Element")}}) | 4 | {{CompatGeckoDesktop("1.9.1")}} | 9 | 9.8 | 4 |
Soporte en {{domxref("CharacterData")}} | 29.0 | {{CompatGeckoDesktop("25")}} [1] | {{CompatNo}} | 16.0 | {{CompatNo}} |
Prestación | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Soporte básico (en {{domxref("Element")}}) | {{CompatVersionUnknown}} | {{CompatGeckoMobile("1.9.1")}} | {{CompatVersionUnknown}} | 9.8 | {{CompatVersionUnknown}} |
Soporte en {{domxref("CharacterData")}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("25")}} | {{CompatNo}} | 16.0 | {{CompatNo}} |
[1] Firefox 25 también añadía esta propiedad a {{domxref("DocumentType")}}, y fue eliminada en Firefox 28 debido a problemas de compatibildad.