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