課程
/前端開發
/JavaScript
/JavaScript進階篇
為什么反向遍歷可以一次清楚所有節點,而正向遍歷要點好幾次?
2019-12-02
源自:JavaScript進階篇 9-14
正在回答
我遇到了同樣的問題,在就業班里問了老師,老師解釋的很好,我把代碼和老師的解釋分享給你:
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>刪除節點removeChild()</title>
</head>
<body>
<div?id="content">
??<h1>html</h1>
??<h1>php</h1>
??<h1>javascript</h1>
??<h1>jquery</h1>
??<h1>java</h1>
</div>
<script?type="text/javascript">
function?clearText()?{
??var?content=document.getElementById("content");
??var?hs=content.childNodes;
??var?len=hs.length;
??????for(var?i=0;i<len;i++){
??????????console.log(hs);
????????content.removeChild(hs[i])
??????}
}
</script>
<button?onclick="clearText()">清除節點內容</button>
</body>
</html>
慕圣大越越
JJLinNNnnn
風箋
ZKKL
?這就是”金剛無敵葫蘆娃“兄弟說的第二種情況
這是最有價值的一個解答
原來是因為每次刪除一條后,整個數組順序發生了變化。
解決思路有兩種
1、一直刪最后一個,即倒序刪,這樣就不會漏了
2、一直刪第一個,即正序刪,不要加i++,這樣也不會漏
niupi 謝謝大佬
因為i在自增,而節點的長度在減少,所以刪一條,就會漏一條數據。
正著刪也可以實現,把 i++ 變為 i? ,不讓它增加,這樣就不會漏過一條數據了
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界
2 回答為什么要點擊兩次清楚節點內容才能清楚最后一個節點
2 回答為什么我不能一次性清除所有節點
2 回答不是說要遍歷每個節點嗎,為什么沒有用到forEach
2 回答如何遍歷新添加的子節點????
2 回答關于js中遍歷子節點的問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-12-03
我遇到了同樣的問題,在就業班里問了老師,老師解釋的很好,我把代碼和老師的解釋分享給你:
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>刪除節點removeChild()</title>
</head>
<body>
<div?id="content">
??<h1>html</h1>
??<h1>php</h1>
??<h1>javascript</h1>
??<h1>jquery</h1>
??<h1>java</h1>
</div>
<script?type="text/javascript">
function?clearText()?{
??var?content=document.getElementById("content");
??var?hs=content.childNodes;
??var?len=hs.length;
??????for(var?i=0;i<len;i++){
??????????console.log(hs);
????????content.removeChild(hs[i])
??????}
}
</script>
<button?onclick="clearText()">清除節點內容</button>
</body>
</html>
2020-06-08
2020-03-21
這是最有價值的一個解答
原來是因為每次刪除一條后,整個數組順序發生了變化。
解決思路有兩種
1、一直刪最后一個,即倒序刪,這樣就不會漏了
2、一直刪第一個,即正序刪,不要加i++,這樣也不會漏
2020-02-23
niupi 謝謝大佬
2020-02-22
因為i在自增,而節點的長度在減少,所以刪一條,就會漏一條數據。
正著刪也可以實現,把 i++ 變為 i? ,不讓它增加,這樣就不會漏過一條數據了