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

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

JavaScript進階篇的9-14節里面的問題

JavaScript進階篇的9-14節里面的問題

巽易3821995 2016-10-09 18:15:00
試過是倒著刪可以,順著不行,然后看下面評論說是因為刪除之后下面的節點自動排上來,會刪一個漏幾個,那么原來的var?childNode?=?content.childNodes[i]; content.removeChild(childNode);如果我把i改成1var?childNode?=?content.childNodes[1]; content.removeChild(childNode);結果還是會漏,到底是怎么一回事呢?這個實在搞不懂,后來我也試過把body里面的標簽合成一排,怕可能是h1之間也算節點的問題,結果還是這樣,我把循環的i<content.childNodes.length加了幾個循環下去倒是能一次刪掉。
查看完整描述

1 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

主要是因為length是根據刪除節點后不斷變化的;

如果正著寫:

for(var?i=0;i<content.childNodes.length;i++){??//如果for循環這么寫

我先假設你content.childNodes.length為5,以下用length表示;
i=0時,i<content.childNodes.length(也就是i<5),i++,執行content.removeChild(childNode);這時因為刪除了一個節點,所以content.childNodes.length為5-1=4;
i=1時,i<4,執行刪除語句;這時length為4-1=3;
i=2時,i<3,執行刪除語句;這時length為3-1=2;
i=3時,i<2,false,不執行,退出循環;
因此只要for循環正著寫,如果length為5,for循環里面的語句只能執行3次,自然不能一次清除;
如果倒著寫:

for(var?i=content.childNodes.length-1;i>=0;i--)

當你點擊觸發,i的值是content.childNodes.length-1,條件是只要i>=0,就可以執行語句,因此這里i能執行到i=0;

因此倒著寫這種寫法下點擊按鈕所有節點全部刪除


查看完整回答
反對 回復 2016-10-09
  • 巽易3821995
    巽易3821995
    嗯,length也跟著變,忘了考慮這塊,謝謝大神
  • 1 回答
  • 0 關注
  • 1068 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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