為什么我這段代碼不能一次吧節點內容清理完,需要點幾次按鈕才行
<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");
? // 在此完成該函數
? for(var i=0;i<content.childNodes.length;i++){
? ? ? var mynode=content.removeChild(content.childNodes[i]);
? ? ? mynode=null;
? }
}
</script>
<button onclick="clearText()">清除節點內容</button>
2016-08-03
因為當你執行了removeChild方法后,content.childNodes.length的值,以及content.childNodes[i]都發生了變化。比如題中有5個子節點,當刪除第1個子節點(html),即content.childNode[0]后,原先的第2個子節點(php)已經變成第1個子節點了,conten.childNodes.length也從5變成了4 。所以想一次刪除的方法應該是:
function clearText() {
? var content=document.getElementById("content");
? // 在此完成該函數
? var content_child=content.childNodes;
? var child_length=content_child.length;
? for(var i=0;i<child_length;i++){
? ? ? content.removeChild(content_child[0]);
? }
}
2016-08-03
刪除代碼一定要注意,刪除一個后,一般節點就少了一個,所以刪除一般是從大到小刪除,即:for(var i=content.childNodes.length-1;i>=0;i--){...}