function countChars(elm) {
if (elm.nodeType == 3) { // TEXT_NODE
return elm.nodeValue.length;
}
var count = 0;
for (var i = 0, child; child = elm.childNodes[i]; i++) {
count += countChars(child);
}
return count;
}
I tried passing this function a string like countChars("hello"); but that didn’t work. What are examples of elements that I can pass?
It expects a reference to a DOM node. That could be a text node (
nodeType == 3) or an element node (nodeType == 1) by the look of the function. For example:The following HTML would cause the above call to return
5:If the argument is a text node the function returns the number of characters that make up that node. If the argument is an element node the function recursively counts the number of characters that make up the descendant text nodes of the element.
The following HTML would cause the above call to return
10(the child node is included):You can see the full list of node types on MDN.