遞歸是這么寫的沒有問題,
單單用for循環(huán)并不能深層遍歷,只能遍歷第一層,例如:
<body>
<div?id="test">
????<ul>
????????<li>
????????????<p>bbb</p>
????????</li>
????</ul>
</div>
<script?type="text/JavaScript">
????function?walkTree(node)?{
????????if(node?==?null)?return;
??????for(var?i=0;i<node.childNodes.length;i++){
??????????console.log(node.childNodes[i].nodeName);???//這里用了nodeName,看的更清楚
??????????//?walkTree(node.childNodes[i]);??//不用遞歸,直接for
??????};
????}
walkTree(document.getElementById('test'))?;
</script>
</body>
以上只用了for循環(huán),結(jié)果只顯示<div id="test">它的所有子節(jié)點,并沒有顯示它的子節(jié)點的子節(jié)點等;
再用遞歸:
<body>
<div?id="test">
????<ul>
????????<li>
????????????<p>bbb</p>
????????</li>
????</ul>
</div>
<script?type="text/JavaScript">
????function?walkTree(node)?{
????????if(node?==?null)?return;
??????for(var?i=0;i<node.childNodes.length;i++){
??????????console.log(node.childNodes[i].nodeName);??
??????????walkTree(node.childNodes[i]);
??????};
????}
walkTree(document.getElementById('test'))?;
</script>
</body>
以上就如題主說的遞歸,運行顯示了<div id="test">的所有子節(jié)點,子節(jié)點的子節(jié)點等,這樣才算完整顯示了樹狀結(jié)構(gòu)