需求:完成遍历并且带缩进
这里细节点:定义一个数组存放缩进“Tab”,何时压入一个缩进,何时退出一个缩进?
只要有子节点,加压入一个缩进,只要本级所有子节点输出完,就退一个\t
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>使用DOM方法递归遍历节点树</title>
</head>
<body>
<span class="msg">Hello World !</span>
<ul>
<li>电影</li>
<li>综艺
<ul>
<li>跑男</li>
<li>爸爸</li>
<li>真男</li>
</ul>
</li>
<li>剧集</li>
</ul>
</body>
<script>
/*定义一个数组用于存放Tab*/
var arr = [];
function getChildren(parent){
/*如果parent是元素节点,就返回nodeName,否则,返回nodeValue*/
console.log(arr.join("")+"|-"+(parent.nodeType==1?parent.nodeName:parent.nodeValue));
if (parent.childNodes.length){
/*只要有子节点,加压入一个缩进*/
arr.push("\t")
for (var i= 0,len=parent.childNodes.length;i<len;i++){
getChildren(parent.childNodes[i]);
}
/*只要本级所有子节点输出完,就退一个\t*/
arr.pop();
}
}
getChildren(document.body.childNodes[3]);
</script>
</html>