for 循环已经遍历完了,不需要用递归吧、?还有为什么标记区域会报错呢?求指点
2 回答
stone310
TA贡献361条经验 获得超191个赞
递归是这么写的没有问题,
单单用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">的所有子节点,子节点的子节点等,这样才算完整显示了树状结构
一瞬儿光
TA贡献178条经验 获得超70个赞
<div id="test"> <div> <div> <div>bbb</div> </div> </div> </div>
<script type="text/javascript">
function walkTree(node) {
if(node == null) return;
console.log(node);
console.log(node.childNodes);
walkTree(node.childNodes);
}
walkTree(document.getElementById('test'));
</script>你那个方法是错的,循环里面怎么能加递归呢?第一层循环还没结束就已经去递归了。
添加回答
举报
0/150
提交
取消
