Skip to content

Element vs Node

You can traverse the DOM using either Element properties (elements only) or Node properties (includes text, comments). Element properties are preferred.

// Node traversal (includes text nodes, comments)
element.parentNode;
element.childNodes; // Includes text nodes (whitespace!)
element.firstChild;
element.lastChild;
element.previousSibling;
element.nextSibling;
// Element traversal (elements only) ← PREFERRED
element.parentElement;
element.children; // Elements only (no text nodes)
element.firstElementChild;
element.lastElementChild;
element.previousElementSibling;
element.nextElementSibling;
<div>
<p>First</p>
<p>Second</p>
</div>
const div = document.querySelector('div');
// Node — includes text nodes (whitespace between tags)
console.log(div.childNodes.length); // 5: text, p, text, p, text
// Element — elements only
console.log(div.children.length); // 2: p, p (clean!)
  • Node traversal includes text and comment nodes (messy)
  • Element traversal returns elements only (clean)
  • Always prefer Element properties for most use cases
  • children vs childNodes is the most common distinction