Javascript 这个函数接受什么类型的参数?

Javascript 这个函数接受什么类型的参数?,javascript,Javascript,我尝试向这个函数传递一个字符串,比如countChars(“hello”);但那没用。我可以传递的元素示例有哪些?它需要DOM节点,比如从document.getElementById()或另一个DOM节点上的子节点列表中获得的节点 它所做的是在元素的子节点列表中查找所有文本节点,并计算它们包含的字符数。它递归地执行此操作,因此它将查找容器中的所有文本,无论在元素图中分隔多远 还应该注意的是,这段代码要求一个节点要么是文本节点,要么是元素。但是,还有其他类型的节点,最明显的是注释节点。它需要对D

我尝试向这个函数传递一个字符串,比如
countChars(“hello”)
;但那没用。我可以传递的元素示例有哪些?

它需要DOM节点,比如从
document.getElementById()
或另一个DOM节点上的子节点列表中获得的节点

它所做的是在元素的子节点列表中查找所有文本节点,并计算它们包含的字符数。它递归地执行此操作,因此它将查找容器中的所有文本,无论在元素图中分隔多远


还应该注意的是,这段代码要求一个节点要么是文本节点,要么是元素。但是,还有其他类型的节点,最明显的是注释节点。

它需要对DOM节点的引用。根据函数的外观,可以是文本节点(
nodeType==3
)或元素节点(
nodeType==1
)。例如:

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;  
}  
以下HTML将导致上述调用返回
5

countChars(document.getElementById("someId"));

您可以看到完整的列表。

看起来您应该传递dom元素。

元素(实际上是节点,因此它会检查nodeType是否为文本节点),例如:


可以通过DOM片段获取节点类型,因此。。。必须输入DOM元素作为输入

该链接中的示例显示了这一点

countChars(document.getElementById("myid"));

+1用于区分一般DOM节点和特定元素节点。+1用于在1分钟内最准确和解释。:-)请记住,IE不支持节点类型常量。我不确定注释节点与这个问题有什么关联。相关的是,要想知道把什么作为该函数的参数,确切地说是nodeType属性。主要是因为OP没有足够的好奇心去看这个。这里的COMMENT_节点只是一个例子,正如您所说,它是一个常量。深层次的想法是“检查示例!”我只是指出,如果您将注释节点传递给相关函数,该函数将抛出错误,因此这可能不是最好的示例!而且它在Internet Explorer中不起作用!是的,我完全同意你的说法,它在IE中不起作用。但我只是说,MDC的文档显示了“那个”示例。而且它有助于获得想法。。。但是,是的,也许范围更广的东西会更有帮助
<div id="someId">Outer<span>inner</span></div>
countChars(document.getElementById("myid"));
var node = document.documentElement.firstChild;
if(node.nodeType != Node.COMMENT_NODE)
  alert("You should comment your code well!");