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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么一鍵刪除不了呢?

<!DOCTYPE HTML>

<html>

<head>

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

<title>無(wú)標(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-1; i++){

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

? var ch = content.childNodes[i];

? content.removeChild(ch);?

? ? }

?

? }

??

}

</script>


<button onclick="clearText()">清除節(jié)點(diǎn)內(nèi)容</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);?
????}
?
??}

這是你的代碼,這個(gè)問(wèn)題其實(shí)不難,可能你被繞進(jìn)去了,一下子沒(méi)出的來(lái)。

我們這里舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明一下,假設(shè)沒(méi)有空白節(jié)點(diǎn)且 childNodes 數(shù)組中只有三個(gè)元素,

childNodes?=?["html","php","java"];?//?簡(jiǎn)單舉例

i = 0 時(shí),childNodes[0] 為 html,被刪除。

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

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

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

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

第一種

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

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

第二種

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

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

第三種

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

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

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

安歌Moose 提問(wèn)者

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

因?yàn)槟銊h掉的同時(shí),length的長(zhǎng)度一直在變到后面i大于length的長(zhǎng)度了就不會(huì)刪了,for循環(huán)里面的i++刪掉就行了

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

舉報(bào)

0/150
提交
取消
JavaScript進(jìn)階篇
  • 參與學(xué)習(xí)       468766    人
  • 解答問(wèn)題       22442    個(gè)

本課程從如何插入JS代碼開(kāi)始,帶您進(jìn)入網(wǎng)頁(yè)動(dòng)態(tài)交互世界

進(jìn)入課程

為什么一鍵刪除不了呢?

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

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

幫助反饋 APP下載

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

公眾號(hào)

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