怎么點擊第一下沒有反應,然后再點擊一下刪除了3個,然后再點擊依次刪除一個
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無標題文檔</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");
? for(i=0;i<content.childNodes.length;i++)
? {
? ? ? var x=content.removeChild(content.childNodes[i]);
? ? ? x=null;
? }
}
</script>
<button onclick="clearText()">清除節點內容</button>
2015-07-20
我發現問題在于for循環里面的i值的變化,不是應該++,而是應該--;你們談論了那么久,<script type="text/javascript">
function clearText() {
? var content=document.getElementById("content");
? // 在此完成該函數
? var o = content.childNodes.length;
? var i=0
? for(i = 1; i<o; i--){
????? content.removeChild(content.childNodes[i]);
? }
}
</script>
這樣問題就搞定了
2015-06-09
還有這個啊 高大上
2015-05-14
length不斷改變,子節點的數組也在改變
2015-04-17
呵呵,,,
2015-04-08
給老師點贊 很清晰的講解
2015-04-06
厲害,原來content.childNodes.length是個變量了!
2015-02-05
棒棒的!
2015-01-23
理解這個問題!看完置頂回答后再做個試驗就一目了然!在每個空白處,原來不是沒有文本么,自己輸入文本,比如依次1-6!這時就會發現第一次點擊按鈕刪除的是1-6這6個數字,然后再點擊才刪除的是前3個!對于第二次只是刪除了前三個,就是樓上的置頂解釋,因為動態變化。
這里再說明一下為何刪除1-6!我的代碼中childnode=content.childNodes,這里childnode其實是c++中引用的意思,也就是他只是別名,是沒有內存空間的,與下面的num=childnode.length不同,這個num是不會再隨著節點的動態變化而變化了,因為他有自己的空間,且空間中存儲了相應的值,你不去做變動,它是不會變化的。而前面的childnode由于是引用,也就是他本質是content.childNodes的值,是動態變化的,也就是這里的子節點在動態變化!這樣子節點每次刪除一次后前移1個,i又加1剛好就是全部刪除的都是文本,也就是我這里加入的1-6!
至于刪到6循環停止了,那就是再往后循環在繼續,已經沒有可以刪除的東西了,所以看到的效果是只刪除到最后一個文本了,但實際循環還是做滿了11次停止,之后后面沒內容了!
說了這么多,就這樣吧!再多說自己也暈了,按規范搞法就行,想這么多沒有意義!
2015-01-16
到時候學JQ之后,寫法會變得好高大上。一句搞定
2015-01-16
自己想了半天,原來是這個問題! ?回答的非常詳細,非常有幫助! 非常感謝