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

stone310
TA貢獻361條經(jīng)驗 獲得超191個贊
主要是因為length是根據(jù)刪除節(jié)點后不斷變化的;
如果正著寫:
for(var?i=0;i<content.childNodes.length;i++){??//如果for循環(huán)這么寫
我先假設你content.childNodes.length為5,以下用length表示;
i=0時,i<content.childNodes.length(也就是i<5),i++,執(zhí)行content.removeChild(childNode);這時因為刪除了一個節(jié)點,所以content.childNodes.length為5-1=4;
i=1時,i<4,執(zhí)行刪除語句;這時length為4-1=3;
i=2時,i<3,執(zhí)行刪除語句;這時length為3-1=2;
i=3時,i<2,false,不執(zhí)行,退出循環(huán);
因此只要for循環(huán)正著寫,如果length為5,for循環(huán)里面的語句只能執(zhí)行3次,自然不能一次清除;
如果倒著寫:
for(var?i=content.childNodes.length-1;i>=0;i--)
當你點擊觸發(fā),i的值是content.childNodes.length-1,條件是只要i>=0,就可以執(zhí)行語句,因此這里i能執(zhí)行到i=0;
因此倒著寫這種寫法下點擊按鈕所有節(jié)點全部刪除
添加回答
舉報
0/150
提交
取消