--- title: ParentNode.firstElementChild slug: Web/API/ParentNode/firstElementChild tags: - API - DOM - ParentNode - Property - Reference translation_of: Web/API/ParentNode/firstElementChild ---

{{ APIRef("DOM") }}

Доступное только для чтения свойство ParentNode.firstElementChild возвращает первый дочерний элемент объекта ({{domxref("Element")}}) или null если дочерних элементов нет.

This property was initially defined in the {{domxref("ElementTraversal")}} pure interface. As this interface contained two distinct set of properties, one aimed at {{domxref("Node")}} that have children, one at those that are children, they have been moved into two separate pure interfaces, {{domxref("ParentNode")}} and {{domxref("ChildNode")}}. In this case, firstElementChild moved to {{domxref("ParentNode")}}. This is a fairly technical change that shouldn't affect compatibility.

Синтаксис

var childNode = elementNodeReference.firstElementChild;

Пример

<p id="para-01">
  <span>First span</span>
</p>

<script type="text/javascript">
  var p01 = document.getElementById('para-01');
  alert(p01.firstElementChild.nodeName)
</script>

В этом примере alert показывает 'span', что является именем тега первого дочернего узла элемента p.

Polyfill для Internet Explorer 8

Это свойство не поддерживается браузером Internet Explorer вплоть до 9 версии, поэтому следующий сниппет может быть использован для добавления поддержки IE8:

// Source: https://github.com/Alhadis/Snippets/blob/master/js/polyfills/IE8-child-elements.js
if(!("firstElementChild" in document.documentElement)){
    Object.defineProperty(Element.prototype, "firstElementChild", {
        get: function(){
            for(var nodes = this.children, n, i = 0, l = nodes.length; i < l; ++i)
                if(n = nodes[i], 1 === n.nodeType) return n;
            return null;
        }
    });
}

Спецификация

Спецификация Статус Комментарий
{{SpecName('DOM WHATWG', '#dom-parentnode-firstelementchild', 'ParentNode.firstElementChild')}} {{Spec2('DOM WHATWG')}} Splitted the ElementTraversal interface in {{domxref("ChildNode")}} and ParentNode. This method is now defined on the latter.
The {{domxref("Document")}} and {{domxref("DocumentFragment")}} implemented the new interfaces.
{{SpecName('Element Traversal', '#attribute-firstElementChild', 'ElementTraversal.firstElementChild')}} {{Spec2('Element Traversal')}} Added its initial definition to the ElementTraversal pure interface and use it on {{domxref("Element")}}.

Совместимость с браузерами

{{ CompatibilityTable() }}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка ({{domxref("Element")}}) 1.0 {{CompatGeckoDesktop("1.9.1")}} 9.0 10.0 4.0
Поддержка {{domxref("Document")}} и {{domxref("DocumentFragment")}} {{experimental_inline}} 29.0 {{CompatGeckoDesktop("25.0")}} {{CompatNo}} 16.0 {{CompatNo}}
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка ({{domxref("Element")}}) {{ CompatVersionUnknown() }} {{CompatGeckoMobile("1.9.1")}} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }}
Поддержка {{domxref("Document")}} и {{domxref("DocumentFragment")}} {{experimental_inline}} {{CompatVersionUnknown}} {{CompatGeckoMobile("25.0")}} {{CompatNo}} 16.0 {{CompatNo}}

Смотрите также