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

怎么点击第一下没有反应,然后再点击一下删除了3个,然后再点击依次删除一个

<!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");

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

  {

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

      x=null;

  }

}

</script>

<button onclick="clearText()">清除节点内容</button>


正在回答

48 回答

i值只是代表循环的次数,并不参与子元素的遍历;每次做删除操作的时候,只要删除第一个节点就可以了。

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

没图没真相,画个图验证一下,分分钟搞定,说了一大堆。画图之后总结一句:removeChild会删除对应位置的节点并且进行重新索引(也就是按照0、1、2.....的顺序),结果导致长度和删除节点的位置变化。

所以始终删除第一个或者最后一个才没有问题。否则就会出错:

始终删除第一个:

nodel=content.childNodes.length

  for(i=0;i<nodel;i++)  {  

      var x=content.removeChild(content.childNodes[0]);  

   }

囧,说了半天也不知道用什么画图,还是在笔记本上面画的。。。

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

果然还是数组长度问题,本以为在循环里会很方便的表示长度,却忽略了一增一减的问题,棒棒哒!

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

点击第一次,删除3个;同理,点击第二次,只删除1个;再点击一次,删除最后1个(也是只删除一个)。所以事实上一共是需要调用3次函数才删除完数据

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

for循环里面为什么非要写:

for(i=0;i<content.childNodes.length;i++)
  {
      var x=content.removeChild(content.childNodes[i]);
  }

不能直接写成:

conten.removeChild(content.childNodes[i]);

吗?

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

马马马!果然老师知道问题所在,我还正纳闷怎么要点击好几下!!!

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

倒序删除:

function clearText() {

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

  for(i=content.childNodes.length-1;i>0;i--){

    var u = content.childNodes[i];

    if(u && u.nodeType==1){

        content.removeChild(u);

        console.log(u);

        break;

    }

  }

}

顺序删除:

function clearText() {

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

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

    var u = content.childNodes[i];

    if(u && u.nodeType==1){

        content.removeChild(u);

        console.log(u);

        break;

    }

  }

}


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

好腻害

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

解释的好清楚,厉害

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

为什么第一次点没反应呢 还是没懂  


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

举报

0/150
提交
取消

怎么点击第一下没有反应,然后再点击一下删除了3个,然后再点击依次删除一个

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信