--- 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.
Это свойство не поддерживается браузером 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}} |