JS進階9-14問題
<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 nodes=content.childNodes;
? for(var i=0;i<nodes.length;i++){
????? if(nodes[i].nodeType==1)
???????? content.removeChild(nodes[i]);
? }
}
</script>
<button onclick="clearText()">清除節點內容</button>
</body>
為什么不加if判斷節點的類型時,用for循環移除全部節點卻不是一次性移除,要點擊button數次才能移除全部子節點。
2017-07-25
你所用的for循環是從小索引開始刪除,但在每一次刪除后,后面的節點會向前移動,因此每個節點的索引也會遞減,而循環變量i仍在繼續增加,所以下一次刪除的節點就與預想的節點的索引不一致,此外,每次刪除后,nodes.length會減一,導致一個for循環結束后,仍然剩下一部分節點未刪除,所以需要多次調用函數進行刪除剩下的節點