課程
/前端開發
/JavaScript
/JavaScript進階篇
好奇怪,我這樣寫?var i=0;i<content.childNodes.length-1;i++,運行結果是,第一次點擊按鈕沒反應,第二次點擊,后三個刪除,第三次點擊,倒數第二個刪除,第四次點擊,才全部刪完,為什么會這樣
2016-03-11
源自:JavaScript進階篇 9-14
正在回答
建議彈出結果一下你就知道為什么是這樣的了
?for(var i=0;i<content.childNodes.length-1;i++){
????????alert('i:'+i+';數組個數: '+content.childNodes.length+';'+content.childNodes[i])//添加測試原因
? ? ? ?var x=content.removeChild(content.childNodes[i]);
? ? ? x=null;
? }
我一開始想都沒想就這樣寫了,然后遇到了你的這種結果,
我來解釋一下發生這樣的原因,
首先,第一次點擊沒反應的原因是刪除的是空白元素,
因為除了ie,其他瀏覽器換行都算一個空白節點,
第一次循環時,刪除的是下標為0的節點,也就是第一個空白節點,然后i加1變成了2,
第二次循環時,刪除的是下標為1的節點,其實刪除的還是空白節點,因為空白節點之前的h1標簽的下標已經從1變成了0,因為第一次循環刪除了第一個節點,剩下的節點也就往前移了一位,
然后之后刪除的都是空白節點,原理一樣
直到i的值達到一個數值,也就是等于length的程度,停止循環,然后由于每次循環length的長度都減1了,所以只循環了一半,恰好吧空白節點刪除了,但是刪除空白節點是看不到效果的,所以第一次點擊沒反應,
之后的原因的點擊都一樣,只不過沒有空白節點了,所以看到的就是你那種效果。。。。。
建議:每次出現問題的時候都試著彈出結果,依次往前找原因。。。。
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界
2 回答為什么結果不對啊
1 回答加法結果為什么不對?
1 回答為什么輸出結果不對?
2 回答為什么相加結果不對
1 回答不知道為什么提示對了,但是看不到結果結果
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-11
建議彈出結果一下你就知道為什么是這樣的了
?for(var i=0;i<content.childNodes.length-1;i++){
????????alert('i:'+i+';數組個數: '+content.childNodes.length+';'+content.childNodes[i])//添加測試原因
? ? ? ?var x=content.removeChild(content.childNodes[i]);
? ? ? x=null;
? }
我一開始想都沒想就這樣寫了,然后遇到了你的這種結果,
我來解釋一下發生這樣的原因,
首先,第一次點擊沒反應的原因是刪除的是空白元素,
因為除了ie,其他瀏覽器換行都算一個空白節點,
第一次循環時,刪除的是下標為0的節點,也就是第一個空白節點,然后i加1變成了2,
第二次循環時,刪除的是下標為1的節點,其實刪除的還是空白節點,因為空白節點之前的h1標簽的下標已經從1變成了0,因為第一次循環刪除了第一個節點,剩下的節點也就往前移了一位,
然后之后刪除的都是空白節點,原理一樣
直到i的值達到一個數值,也就是等于length的程度,停止循環,然后由于每次循環length的長度都減1了,所以只循環了一半,恰好吧空白節點刪除了,但是刪除空白節點是看不到效果的,所以第一次點擊沒反應,
之后的原因的點擊都一樣,只不過沒有空白節點了,所以看到的就是你那種效果。。。。。
建議:每次出現問題的時候都試著彈出結果,依次往前找原因。。。。