HTML DOM Element firstChild
Example
Return the HTML content of the first child node of an <ul> element:
document.getElementById("myList").firstChild.innerHTML;
Try it Yourself »
Get the text of the first child node of a <select> element:
let text = document.getElementById("mySelect").firstChild.text;
Try it Yourself »
More examples below.
Description
The firstChild
property returns the first child node of a node.
The firstChild
property returns a node object.
The firstChild
property is read-only.
The firstChild
property is the same as childNodes[0]
.
Important!
firstChild
returns the first child node: An element node, a text node, or a
comment node.
Whitespace between elements are also text nodes.
Alternative:
The firstElementChild Property
The firstElementChild
property returns the first child element (ignores text and comment nodes).
See Also:
Node Properties
Nodes vs Elements
In the HTML DOM terminology:
Nodes are all nodes (element nodes, text nodes, and comment nodes).
Whitespace between elements are also text nodes.
Elements are only element nodes.
childNodes vs children
childNodes returns child nodes (element nodes, text nodes, and comment nodes).
children returns child elements (not text and comment nodes).
firstChild vs firstElementChild
firstChild returns the first child node (an element node, a text node or a comment node). Whitespace between elements are also text nodes.
firstElementChild returns the first child element (not text and comment nodes).
lastChild vs lastElementChild
lastChild returns the last child node (an element node, a text node or a comment node). Whitespace between elements are also text nodes.
lastElementChild returns the last child element (not text and comment nodes).
Syntax
element.firstChild
or
node.firstChild
Return Value
Type | Description |
Node | The first child of a node.null if no child exists. |
More Examples
This example demonstrates how whitespace may interfere.
Try to get the node name of the first child node of "myDIV":
<div id="myDIV">
<p>Looks like first child</p>
<p>Looks like last Child</p>
</div>
<script>
let text = document.getElementById("myDIV").firstChild.nodeName;
</script>
Try it Yourself »
However, if you remove the whitespace from the source, there are no #text nodes in "myDIV":
<div id="myDIV"><p>First child</p><p>Last Child</p></div>
<script>
let text = document.getElementById("myDIV").firstChild.nodeName;
</script>
Try it Yourself »
Browser Support
element.firstChild
is a DOM Level 1 (1998) feature.
It is fully supported in all browsers:
Chrome | Edge | Firefox | Safari | Opera | IE |
Yes | Yes | Yes | Yes | Yes | 9-11 |