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

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

求教大神,這樣為什么不能一下子刪除,點一下刪一個

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>無標(biāo)題文檔</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;i++)

? {

? ? ??

? ? ?content.removeChild(content.childNodes[i]);

? ? ??

? }

}

</script>


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



正在回答

5 回答

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

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

我們這里舉一個簡單的例子來說明一下,假設(shè)沒有空白節(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ù)組的長度一直在變化,但前面沒刪的元素不受影響,下標(biāo)保持不變。

第二種

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

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

第三種

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

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

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

亻亻殊途

講的好明白 多謝
2016-10-13 回復(fù) 有任何疑惑可以回復(fù)我~

上面的答案都沒告訴你為什么,我看了下,大概懂了點,這樣說吧,h1元素用1,2,3,4,5表示,空白文本用A,B,C,D,E,F表示,一開始排列是這樣的,A1B2C3D4E5F.,然后你點第一次,for第一次循環(huán)刪除了A空白文本,然后i++變成1了,這時候排列是1B2C3D4E5F,for第二次運(yùn)行刪除了B。第三次for的循環(huán)I=2,排列是12C3D4E5F,全部循環(huán)過后,排列只剩下12345了??瞻孜谋径紕h除光了,所以你點了一下,for循環(huán)了6次,把空白文本都刪除了,但是你從結(jié)果是看不出來的。然后當(dāng)你點了第二次,以此類推,就把1,3,5的元素刪除了。第三次點擊刪除了2,第四次點解刪除了4.

2 回復(fù) 有任何疑惑可以回復(fù)我~

for(var i=content.childNodes.length-1;i>=0;i--)

0 回復(fù) 有任何疑惑可以回復(fù)我~

這個問題我也見到了,你的for從大到小循環(huán)for(var i=content.childNodes.length-1;i>=0i--)

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

預(yù)言家小新

為什么一定要從大到小?。???
2016-10-12 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕妹7508549 回復(fù) 預(yù)言家小新

為什么從大到小我不知道,感覺應(yīng)該是,刪除一個后觸發(fā)了什么,導(dǎo)致退出了腳本,可能是刪除前一個node會引發(fā)界面位移,或者是重新計算空間,前一個的刪除會影響后一個,但后一個的刪除不會影響前一個,應(yīng)該就是這個原因
2016-10-26 回復(fù) 有任何疑惑可以回復(fù)我~

function clearText() {

? var content=document.getElementById("content");

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

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

? {

???? ?

???? content.removeChild(content.childNodes[i]);

???? ?

? }

}

試試看

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

求教大神,這樣為什么不能一下子刪除,點一下刪一個

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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