为了账号安全,请及时绑定邮箱和手机立即绑定

关于删除一行的实现,我这个点击一下删除一行在删除最后一行时不知道问什么要点击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下载
官方微信