MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/a3e7b5301fea

The Node.firstChild read-only property returns the node's first child in the tree, or null if the node is childless. If the node is a Document, it returns the first node in the list of its direct children.

Syntax

var childNode = node.firstChild;

Example

This example demonstrates the use of firstChild and how whitespace nodes might interfere with using this property.

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

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

In the above, the alert will show '#text' because a text node is inserted to maintain the whitespace between the end of the opening <p> and <span> tags. Any whitespace will cause the #text node to be inserted, from a single space to any number of spaces, returns, tabs, and so on.

Another #text node is inserted between the closing </span> and </p>tags.

If this whitespace is removed from the source, the #text nodes are not inserted and the span element becomes the paragraph's first child.

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

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

Now the alert will show 'SPAN'.

To avoid the issue with #text or #comment nodes being returned by node.firstChild, ParentNode.firstElementChild can be used to return only the first element node. The caveat being that ParentNode.firstElementChild requires a shim for IE8, IE9 and Safari. 

Specifications

Specification Status Comment
DOM
The definition of 'Node.firstChild' in that specification.
Living Standard No change
Document Object Model (DOM) Level 3 Core Specification
The definition of 'Node.firstChild' in that specification.
Recommendation No change
Document Object Model (DOM) Level 2 Core Specification
The definition of 'Node.firstChild' in that specification.
Recommendation No change
Document Object Model (DOM) Level 1 Specification
The definition of 'Node.firstChild' in that specification.
Recommendation Initial definition

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 20 (12.10240) 1.0 (1.7 or earlier) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) 1.0 20 (12.10240) 1.0 (1.0) (Yes) (Yes) (Yes)