亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數遞歸的問題?????

函數遞歸的問題?????

xx001 2016-10-14 15:11:44
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">的所有子節點,子節點的子節點等,這樣才算完整顯示了樹狀結構

查看完整回答
2 反對 回復 2016-10-14
?
一瞬兒光

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>

你那個方法是錯的,循環里面怎么能加遞歸呢?第一層循環還沒結束就已經去遞歸了。

查看完整回答
反對 回復 2016-10-14
  • 2 回答
  • 0 關注
  • 1405 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號