xx001
2016-10-14 15:11:44
for 循環(huán)已經(jīng)遍歷完了,不需要用遞歸吧、?還有為什么標(biāo)記區(qū)域會(huì)報(bào)錯(cuò)呢?求指點(diǎn)
2 回答

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
遞歸是這么寫的沒有問題,
單單用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é)點(diǎn),并沒有顯示它的子節(jié)點(diǎn)的子節(jié)點(diǎ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);?? ??????????walkTree(node.childNodes[i]); ??????}; ????} walkTree(document.getElementById('test'))?; </script> </body>
以上就如題主說的遞歸,運(yùn)行顯示了<div id="test">的所有子節(jié)點(diǎn),子節(jié)點(diǎn)的子節(jié)點(diǎn)等,這樣才算完整顯示了樹狀結(jié)構(gòu)

一瞬兒光
TA貢獻(xiàn)178條經(jīng)驗(yàn) 獲得超70個(gè)贊
<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>
你那個(gè)方法是錯(cuò)的,循環(huán)里面怎么能加遞歸呢?第一層循環(huán)還沒結(jié)束就已經(jīng)去遞歸了。
添加回答
舉報(bào)
0/150
提交
取消