--- title: NonDocumentTypeChildNode.previousElementSibling slug: Web/API/NonDocumentTypeChildNode/previousElementSibling translation_of: Web/API/NonDocumentTypeChildNode/previousElementSibling ---
{{APIRef("DOM")}}

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.

Sintaxis

prevNode = elementNodeReference.previousElementSibling;

Ejemplo

<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

Polyfill para Internet Explorer 8

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;
        }
    });
}

Especificaciones

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")}}.

Compatibilidad con navegadores

{{CompatibilityTable}}
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.

Ver también