JS進(jìn)階9-14問(wèn)題
<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");
? // 在此完成該函數(shù)
? 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()">清除節(jié)點(diǎn)內(nèi)容</button>
</body>
為什么不加if判斷節(jié)點(diǎn)的類(lèi)型時(shí),用for循環(huán)移除全部節(jié)點(diǎn)卻不是一次性移除,要點(diǎn)擊button數(shù)次才能移除全部子節(jié)點(diǎn)。
2017-07-25
你所用的for循環(huán)是從小索引開(kāi)始刪除,但在每一次刪除后,后面的節(jié)點(diǎn)會(huì)向前移動(dòng),因此每個(gè)節(jié)點(diǎn)的索引也會(huì)遞減,而循環(huán)變量i仍在繼續(xù)增加,所以下一次刪除的節(jié)點(diǎn)就與預(yù)想的節(jié)點(diǎn)的索引不一致,此外,每次刪除后,nodes.length會(huì)減一,導(dǎo)致一個(gè)for循環(huán)結(jié)束后,仍然剩下一部分節(jié)點(diǎn)未刪除,所以需要多次調(diào)用函數(shù)進(jìn)行刪除剩下的節(jié)點(diǎn)