JavaScript DOM childNodes.length also returning number of text nodes

Samuel Liew picture Samuel Liew · Jun 15, 2011 · Viewed 18.6k times · Source

In JavaScript DOM, childNodes.length returns the number of both element and text nodes. Is there any way to count only the number of element-only child nodes?

For example, childNodes.length of div#posts will return 6, when I expected 2:

<div id="posts">
    <!-- some comment -->
    <!-- another comment -->
    <div>an element node</div>
    <!-- another comment -->
    <span>an element node</span>
    a text node
</div>

Answer

mgiuca picture mgiuca · Jun 15, 2011

Not directly. Text nodes (including comments and so on) are child nodes.

Your best bet is to iterate over the childNodes array and count up only those nodes with nodeType == Node.ELEMENT_NODE. (And write a function to do so.)