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

下面的代码为什么不会无限循环下去呢?我删除了一个子元素也添加了一个子元素,应该是无限循环的吧?

下面的代码为什么不会无限循环下去呢?我删除了一个子元素也添加了一个子元素,应该是无限循环的吧?

徐锦杰 2016-11-06 19:46:06
<!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 content=document.getElementById("content");    var conCl=content.childNodes;    if(conCl[0]!=1)    {        content.removeChild(conCl[0]);    }    var x=content.removeChild(conCl[0]);    var newh1=document.createElement("h1");      newh1.innerHTML=x.innerHTML;      content.appendChild(newh1);}</script><button onclick="clearText()">清除节点内容</button></body></html>
查看完整描述

3 回答

已采纳
?
stone310

TA贡献361条经验 获得超191个赞

 if(conCl[0]!=1)这里是 if(conCl[0].nodeType!=1)

查看完整回答
反对 回复 2016-11-06
?
0101

TA贡献11条经验 获得超3个赞

因为删除了两个,标签与标签之间的空白也是算节点的。一开始有11个节点,你点一次,就删除最开始的那个空白节点,然后把第二个 h1 节点移到最后面,第二次删除了第三个空白节点,第三次删除了第五个空白节点,第四次删除了第七个空白节点,第五次删除了第九个空白节点,第六次删除了第十一个空白节点,也就是最后一个,所以从第七次点击开始,都会少一个。

查看完整回答
反对 回复 2016-11-06
  • 0101
    0101
    是啊,if(conCl[0].nodeType!=1) 就是对的
  • 0101
    0101
    而且其实不用先删除,获取内容,新建一个节点再插入,直接 appendChild(conCl[0]) 就可以。
  • 3 回答
  • 0 关注
  • 1434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信