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

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

關于刪除一行的實現,我這個點擊一下刪除一行在刪除最后一行時不知道問什么要點擊2次,不知道哪位大神能解答一下?

<!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 mynode=document.getElementById("content");

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

{

var x=mynode.removeChild(mynode.childNodes[i]);

}

}

? ??

function clearone(){

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

//此處用到的是繼續循環:continue

for(i=0;i<mynode.childNodes.length;i++)

{

if(mynode.childNodes[i].nodeType!=1)

{

continue;

}

var x=mynode.removeChild(mynode.childNodes[mynode.childNodes.length-1]);

}

}

</script>



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

<input type="button" value="刪除一行" onclick="clearone()" />



</body>

</html>


正在回答

3 回答

(第一份length錯了,當時做著做著后面忘記理思路了,這份正確)你這個語法完全是錯的!首先,你刪除一行,為什么要用for循環?for循環是用來遍歷的!這里包括空格(空行)一共有11個節點,先把節點列舉出來:(不用看,需要時再來查找)

a[0]:空格;????a[1]:html;????a[2]:空格;????a[3]:php;????a[4]:空格; ? ?a[5]:javascript;????a[6]:空格;????a[7]:jquery;????a[8]:空格;????a[9]:java;?????a[10]:空格;?

下面你可以當成一個表格來看(第一次點擊“刪除一行”,所發生的步驟)

i ? ?length ? ?刪除的節點(刪除為a[length-1]) ? //i為偶數時,a[i].type!=1;i為奇數時,a[i].type==1;

0 ? ?11 ? ? ? ??不刪除???????? ? ????????? ?//i為偶數,continue,不刪除,length依然為11;

1 ? ?11 ? ? ? ?刪除a[10]:空格 ? ? ? ? //i為奇數,刪除后,length為10(此處依然為11,下面為刪除后變成10)

2 ? ?10 ? ? ? ? ?不刪除

3 ? ?10 ? ? ? ? ?刪除a[9]:java

4 ? ?9 ? ? ? ? ?不刪除

5 ? ?9 ? ? ? ? 刪除a[8]:空格

6 ? ?8 ? ? ? ? 不刪除

7????8????? ? ?刪除a[7]:jquery

8????7????????i<length不成立,因此不執行


以上就是你第一次點擊所執行的所有步驟,可以說,你只刪了兩個完全算很幸運了,你的邏輯完全錯誤,可以說牛頭不對馬嘴。

至于第二次,第三次以及以后的點擊,每一次點擊你都可以像我這樣列個表來看看。你就知道最后為什么要點兩次才刪除掉了,這里我就不幫你列了。


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

qq_楓_ 提問者

請教一下,那按照我的想法,點擊一下刪除一行怎么實現???
2016-12-02 回復 有任何疑惑可以回復我~
function?clearLine(){
????var?content=document.getElementById("content");
????var?count=0;
????for(var?i=content.childNodes.length-1;i>=0;i--){
????????var?x=content.childNodes[i];
????????if(x?&&?x.nodeType==1){?//?非空白節點
????????????content.removeChild(content.childNodes[i]);
????????????break;
????????}
????}
}

用if 判斷該節點 是不是空白節點。 然后break語句跳出循環

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

你這個語法完全是錯的!首先,你刪除一行,為什么要用for循環?for循環是用來遍歷的!這里包括空格(空行)一共有11個節點,先把節點列舉出來:(不用看,需要時再來查找)

a[0]:空格;????a[1]:html;????a[2]:空格;????a[3]:php;????a[4]:空格; ? ?a[5]:javascript;????a[6]:空格;????a[7]:jquery;????a[8]:空格;????a[9]:java;?????a[10]:空格;?

下面你可以當成一個表格來看(第一次點擊“刪除一行”,所發生的步驟)

i ? ?length ? ?刪除的節點(刪除為a[length-1]) ? //i為偶數時,a[i].type!=1;i為奇數時,a[i].type==1;

0 ? ?11 ? ? ? ??不刪除???????? ? ????????? ?//i為偶數,continue,不刪除,length依然為11;

1 ? ?11 ? ? ? ?刪除a[10]:空格; ? ? ? ? //i為奇數,刪除后,length為10(此處依然為11,下面為刪除后變成10)

2????9 ? ? ? ? ?不刪除

3????8 ? ? ? ? ?刪除a[9]:java

4????7 ? ? ? ? ?不刪除

5????6 ? ? ? ? 刪除a[8]:空格;

6 ? ?5 ? ? ? ? i<length不成立,因此不執行


以上就是你第一次點擊所執行的所有步驟,可以說,你只刪了兩個完全算很幸運了,你的邏輯完全錯誤,可以說牛頭不對馬嘴。

至于第二次,第三次以及以后的點擊,每一次點擊你都可以像我這樣列個表來看看。你就知道最后為什么要點兩次才刪除掉了,這里我就不幫你列了。

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

舉報

0/150
提交
取消

關于刪除一行的實現,我這個點擊一下刪除一行在刪除最后一行時不知道問什么要點擊2次,不知道哪位大神能解答一下?

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

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

幫助反饋 APP下載

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

公眾號

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