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
提交
取消