如何获取一个页面的所有节点数
function countNodes(node) {
// 计算自身
var count = 1;
// 判断是否存在子节点
if(node.hasChildNodes()) {
// 获取子节点
var cnodes = node.childNodes;
for(var i=0; i<cnodes.length; i++) {
count = count + countNodes(cnodes.item(i))
}
}
return count;
}
countNodes(document.body)
如何获取一个页面中 DOM 树的最大深度
var map = cb => arr => Array.prototype.map.call(arr, cb);
var max = arr => arr.reduce((acc, cur) => {
if (cur >= acc) return cur;
else return acc;
}, arr[0]);
var nextChildren = node => {
// 基准条件
if (node.children.length === 0) return 1;
else {
// 求子节点们的长度 并取最大值
var deeps = map(nextChildren)(node.children);
return 1 + max(deeps);
}
}
// 计算
var $body = document.getElementsByTagName('body')[0];
var deep = nextChildren($body);
console.log(deep);