ParentNode.firstElementChild

La proprietà ParentNode.firstElementChild di sola lettura restituisce il primo figlio Element dell'oggetto, oppure null se non ha elementi figli.

Questa proprietà era inizialmente definita nell'interfaccia pura ElementTraversal pure interface. Poiché questa interfaccia conteneva due distinti set di proprietà, una diretta al Node che ha figli, una a quelli che sono figli, sono stati spostati in due interfacce pure separate, ParentNode e ChildNode. In questo caso, firstElementChild è stato spostato su ParentNode. Questa è una modifica abbastanza tecnica che non dovrebbe influire sulla compatibilità.

Sintassi

var element = node.firstElementChild; 

Esempio

<ul id="foo">
  <li>First  (1)</li>
  <li>Second (2)</li>
  <li>Third  (3)</li>
</ul>

<script>
var foo = document.getElementById('foo');
// yields: First  (1)
console.log(foo.firstElementChild.textContent);
</script>

Polyfill per IE8, IE9 e Safari

// Overwrites native 'firstElementChild' prototype.
// Adds Document & DocumentFragment support for IE9 & Safari.
// Returns array instead of HTMLCollection.
;(function(constructor) {
    if (constructor &&
        constructor.prototype &&
        constructor.prototype.firstElementChild == null) {
        Object.defineProperty(constructor.prototype, 'firstElementChild', {
            get: function() {
                var node, nodes = this.childNodes, i = 0;
                while (node = nodes[i++]) {
                    if (node.nodeType === 1) {
                        return node;
                    }
                }
                return null;
            }
        });
    }
})(window.Node || window.Element);

Specifiche

Specifica Stato Commento
DOM
The definition of 'ParentNode.firstElementChild' in that specification.
Living Standard Diviso l'interfaccia ElementTraversal in ChildNodeParentNode. Questo metodo è ora definito su quest'ultimo.
Il Document e DocumentFragment implementato le nuove interfacce.
Element Traversal Specification
The definition of 'ElementTraversal.firstElementChild' in that specification.
Obsolete Aggiunta la sua definizione iniziale all'interfaccia pura ElementTraversal e usarla su Element.

Compatibilità con i browser

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
firstElementChildChrome Full support 1Edge ? Firefox Full support 3.5IE Full support 9Opera Full support 10Safari Full support 4WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
Support on Document and DocumentFragment
Experimental
Chrome Full support 29Edge ? Firefox Full support 25IE No support NoOpera Full support 16Safari No support NoWebView Android Full support YesChrome Android Full support YesFirefox Android ? Opera Android ? Safari iOS No support NoSamsung Internet Android Full support Yes

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.

Vedi anche