这个函数需要什么样的参数?

use*_*637 3 javascript

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;  
}  
Run Code Online (Sandbox Code Playgroud)

我试过传递这个函数的字符串countChars("hello"); 但那没用.我可以传递哪些元素的例子?

Jam*_*ice 5

它期望引用DOM节点.根据函数的外观,它可以是文本node(nodeType == 3)或元素node(nodeType == 1).例如:

countChars(document.getElementById("someId"));
Run Code Online (Sandbox Code Playgroud)

以下HTML将导致上述调用返回5:

<span id="someId">Hello</span>
Run Code Online (Sandbox Code Playgroud)

如果参数是文本节点,则该函数返回组成该节点的字符数.如果参数是元素节点,则函数递归计算构成元素的后代文本节点的字符数.

以下HTML将导致上述调用返回10(包含子节点):

<div id="someId">Outer<span>inner</span></div>
Run Code Online (Sandbox Code Playgroud)

您可以在MDN上查看节点类型的完整列表.