qq_枫_
2016-12-01 17:38
<!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>
(第一份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不成立,因此不执行
以上就是你第一次点击所执行的所有步骤,可以说,你只删了两个完全算很幸运了,你的逻辑完全错误,可以说牛头不对马嘴。
至于第二次,第三次以及以后的点击,每一次点击你都可以像我这样列个表来看看。你就知道最后为什么要点两次才删除掉了,这里我就不帮你列了。
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语句跳出循环
你这个语法完全是错的!首先,你删除一行,为什么要用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不成立,因此不执行
以上就是你第一次点击所执行的所有步骤,可以说,你只删了两个完全算很幸运了,你的逻辑完全错误,可以说牛头不对马嘴。
至于第二次,第三次以及以后的点击,每一次点击你都可以像我这样列个表来看看。你就知道最后为什么要点两次才删除掉了,这里我就不帮你列了。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题