第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么一鍵刪除不了呢?

<!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");

? // 在此完成該函數(shù)

? for(var i = 0; i < content.childNodes.length-1; i++){

? ? if(content.childNodes.length>0){

? var ch = content.childNodes[i];

? content.removeChild(ch);?

? ? }

?

? }

??

}

</script>


<button onclick="clearText()">清除節(jié)點內容</button>




</body>

</html>


正在回答

3 回答

for(var?i?=?0;?i?<?content.childNodes.length-1;?i++){
????if(content.childNodes.length>0){
??var?ch?=?content.childNodes[i];
??content.removeChild(ch);?
????}
?
??}

這是你的代碼,這個問題其實不難,可能你被繞進去了,一下子沒出的來。

我們這里舉一個簡單的例子來說明一下,假設沒有空白節(jié)點且 childNodes 數(shù)組中只有三個元素,

childNodes?=?["html","php","java"];?//?簡單舉例

i = 0 時,childNodes[0] 為 html,被刪除。

但這時,childNodes 數(shù)組發(fā)生了變化,變?yōu)?["php","java"],只剩兩個元素,因為 html 被刪除了。

此時,顯然,childNodes 數(shù)組的 length 也發(fā)生變化,從 3 變?yōu)榱?2。

i++,i = 1,第二次循環(huán)要刪除的是 childNodes[1],也就是 java,而不是 php,php 被留在了數(shù)組中,沒有刪除。

怎么改?方法有不少,列舉幾種:

第一種

for(var?i=content.childNodes.length-1;i>=0;i--){
?????var?childNode?=?content.childNodes[i];
?????content.removeChild(childNode);
??}

給 i 賦初值為數(shù)組長度減一,也就是定位在 childNodes 數(shù)組的最后一個元素,然后每次循環(huán) i--,從后往前刪,這樣雖然數(shù)組的長度一直在變化,但前面沒刪的元素不受影響,下標保持不變。

第二種

while?(content.childNodes.length?>?0)?{
????var?childNode?=?content.childNodes[0];
????content.removeChild(childNode);
}

這個是判斷當前 childNodes 數(shù)組中是否還有元素,如果有,就將第一個刪除,不用去管刪的是什么,也不用管下標,直到刪光為止。

第三種

while?(content.firstChild)?{
??????var?node?=?content.firstChild;
??????content.removeChild(node);
??}

這和第二種方法類似,不過將 childNodes[0] 換成了 firstChild,意思一樣的。就是判斷當前 content 的第一個子節(jié)點,如果存在,就刪除第一個子節(jié)點,繼續(xù)判斷,當 firstChild 返回 null,說明全部刪除。

0 回復 有任何疑惑可以回復我~
#1

安歌Moose 提問者

非常感謝!
2016-10-15 回復 有任何疑惑可以回復我~

因為你刪掉的同時,length的長度一直在變到后面i大于length的長度了就不會刪了,for循環(huán)里面的i++刪掉就行了

0 回復 有任何疑惑可以回復我~
刪掉 for 循環(huán)吧
0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468964    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網(wǎng)頁動態(tài)交互世界

進入課程

為什么一鍵刪除不了呢?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號