--- title: Node.firstChild slug: Web/API/Element/firstChild tags: - API - DOM - Node - Proprietà - Referenza translation_of: Web/API/Node/firstChild ---
{{APIRef("DOM")}}

La proprietà di sola lettura Node.firstChild restituisce il primo figlio del nodo nell'albero o null se il nodo non ha figli. Se il nodo è un Document, restituisce il primo nodo nell'elenco dei suoi figli diretti.

Sintassi

var childNode = node.firstChild;

Esempio

Questo esempio dimostra l'uso di firstChild e il modo in cui i nodi degli spazi bianchi potrebbero interferire con l'utilizzo di questa proprietà.

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

<script>
  var p01 = document.getElementById('para-01');
  console.log(p01.firstChild.nodeName);
</script>

In quanto sopra, la console console mostrerà '#text' perché viene inserito un nodo di testo per mantenere lo spazio bianco tra la fine dei tag di apertura <p> e <span>. Qualsiasi spazio bianco creerà un nodo #text da un singolo spazio a più spazi, ritorni, schede e così via.

Un altro nodo #text viene inserito tra i tag di chiusura </span> e </p>.

Se questo spazio viene rimosso dall'origine, i nodi #text non vengono inseriti e l'elemento span diventa il primo figlio del paragrafo.

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

<script>
  var p01 = document.getElementById('para-01');
  console.log(p01.firstChild.nodeName);
</script>

Ora l'avviso mostrerà 'SPAN'.

Per evitare il problema con node.firstChild che restituisce i nodi #text#comment, {{domxref("ParentNode.firstElementChild")}} può essere utilizzato per restituire solo il primo nodo elemento. Tuttavia, node.firstElementChild richiede uno shim per Internet Explorer 9 e versioni precedenti.

Specifiche

Specifica Stato Commentp
{{SpecName('DOM WHATWG', '#dom-node-firstchild', 'Node.firstChild')}} {{Spec2('DOM WHATWG')}} Nessun cambiamento
{{SpecName('DOM3 Core', 'core.html#ID-169727388', 'Node.firstChild')}} {{Spec2('DOM3 Core')}} Nessun cambiamento
{{SpecName('DOM2 Core', 'core.html#ID-169727388', 'Node.firstChild')}} {{Spec2('DOM2 Core')}} Nessun cambiamento
{{SpecName('DOM1', 'level-one-core.html#ID-169727388', 'Node.firstChild')}} {{Spec2('DOM1')}} Definizione iniziale

Compatibilità con i browser

{{Compat("api.Node.firstChild")}}