亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

為什么這樣寫不能一次性刪除完整,而且點擊一次沒反應,點擊第二次刪除html、javascript、jQuery,點擊第三次刪除java,點擊第四次刪除php???怪事??!

這是我的代碼:


正在回答

2 回答

簡單,因為刪除了子節點后,后面的子節點會自動替補上空缺,刪了第一個,原來的第二個就變了第一個。所以應該每次刪除的都是第一個,不應該刪除第i個,因為i在變化,而你始終要從第一個開始刪除。

另外,初始條件也不能是i=0,i++。假設你刪了第一個,i就變成了1,那么下一次你刪除的就是剩下的所有子節點中的第二個,第一個被你漏掉了啊。在下一次i=2,你刪除的就是子節點集合里的第三個了。所以要這么改:

<script?type="text/javascript">
function?clearText()?{
??var?content=document.getElementById("content");
????for(var?i=content.childNodes.length;i>0;i--){?//一共有幾個就要刪幾次,刪到0為止
??????var??x=content.removeChild(content.childNodes[0]);//每次都刪第一個
??????x=null;
??}??
}
</script>


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

慕勒9330939

比樓上好理解多了233
2016-12-14 回復 有任何疑惑可以回復我~
#2

進擊君 回復 慕勒9330939

謝謝~加油~
2016-12-14 回復 有任何疑惑可以回復我~
#3

qq_火茲_03896205

您好,我剛剛試了你的代碼,為什么點擊一次時子節點全部刪除了呢,我正琢磨著怎么一個一個刪除,看了你的代碼,運行時點擊一次,全部刪除了。
2016-12-30 回復 有任何疑惑可以回復我~
#4

進擊君 回復 qq_火茲_03896205

因為寫了個循環,遍歷了所有元素,所以循環結束后就全部刪掉了。如果要點擊一次刪除一個,把循環去掉就行
2016-12-31 回復 有任何疑惑可以回復我~
#5

利木 回復 qq_火茲_03896205

我也試了,也是一次性全部刪除了……
2017-01-25 回復 有任何疑惑可以回復我~
查看2條回復

1.因為空格鍵也算一個結點,第一次點擊是刪除的是空格鍵的空結點,這可以在每個標簽加上個數字去試試看。

2.要注意在刪除節點同時,content孩子節點的個數和位置也在變化,

不要把i<content.childNodes.length做為判斷條件,舉例說明,IE下執行,節點個數5個,當我點一次刪除按鈕。

注意:5個節點分別對應下標是從0開始:??? 1[0]???????? 2[0]???????? 3[0]?????????? 4[0]????????? 5[0]?

i=0?????content.childNodes.length=5????? 0<5? 刪除第一個節點后,繼續循環

i=1?????content.childNodes.length=4????? 1<4?? 刪除第二個節點后,繼續循環

i=2?????content.childNodes.length=3?????? 2<3? ?刪除第三個節點后,繼續循環

i=3???content.childNodes.length=2????????? 3<2? 不成立,所以不繼續。

這也就是為什么一次刪除不了所以節點,且第二次點擊刪除html、javascript、jQuery,點擊第三次刪除java,點擊第四次刪除php


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

慕粉4340077 提問者

謝謝,雖然還是不太明白。我再琢磨會
2016-12-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么這樣寫不能一次性刪除完整,而且點擊一次沒反應,點擊第二次刪除html、javascript、jQuery,點擊第三次刪除java,點擊第四次刪除php???怪事??!

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

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號