stone310
递归是这么写的没有问题,单单用for循环并不能深层遍历,只能遍历第一层,例如:<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循环,结果只显示<div id="test">它的所有子节点,并没有显示它的子节点的子节点等;再用递归:<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">的所有子节点,子节点的子节点等,这样才算完整显示了树状结构