我编写了一个计算DOM中节点总数的函数。
var nodeCount = 1;
//1 for the first node, assuming it IS a node
function traverseDom(currentNode) {
if(nodeCount == 1 || !(currentNode.nextSibling)){
if(currentNode.firstChild){
nodeCount += 1;
//console.log(currentNode.firstChild.nodeType);
traverseDom(currentNode.firstChild);
}
}else{
if(currentNode.nextSibling){
nodeCount += 1;
traverseDom(currentNode.nextSibling);
}
}
return nodeCount;
}
console.log(traverseDom(document.getElementsByTagName("body")[0]));
该函数将根节点作为参数,从该点遍历DOM并返回节点数。它适用于其他节点但是当我传递body
元素时,即使标记之间没有空格,该函数也总是返回3.这两个不可见节点来自哪里?
这是HTML结构:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body></body>
</html>