想依次輸出被刪除內容,結果是undefined,錯在哪?
<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");
? // 在此完成該函數
? for(var i=0;i<content.childNodes.length;i++){
? ? ? var x=content.removeChild(content.childNodes[i]);
? ? ? document.write("被移除的內容是:"+x.innerHTML+"<br>");? ? ? //這一句的問題在哪里????
? }
}
</script>
運行結果:
被移除的內容是:undefined
被移除的內容是:undefined
被移除的內容是:undefined
被移除的內容是:undefined
被移除的內容是:undefined
被移除的內容是:undefined
2019-01-03
for(var i=0;i<content.childNodes.length;i++) 你應該從后面的元素的刪除起, 而不是 前面.?
2018-10-14
我也被這個難到了
2018-09-17
自答。
因為在Chrome,Firefox等瀏覽器看來,HTML代碼寫在一行和分多行是有區別的,上述HTML部分實際上存在空節點,如圖片:
空節點是不具有innerHTML屬性,其次在循環的同時,數組的長度在改變,這就難以得到正確結果。
正確做法之一是,將非空節點存在新數組中,然后處理新數組元素: