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

怎么点击第一下没有反应,然后再点击一下删除了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++,因为一共有11个节点,往往你运行到一半的时候就会停止了,那是因为你把某个节点删除之后,后面的节点就会往前排。

content.childNodes[0]删掉后,content.childNodes[1]就变成了content.childNodes[0],然后你下一步删掉的是content.childNodes[1],就是原来的content.childNodes[2],以此类推就会造成一次性删不完的结果。

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

感谢大神解惑

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

//一次全都删完

<script type="text/javascript">

function clearText() {

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

  // 在此完成该函数

  var hs=content.childNodes;

  for(var i=0;i<hs.length;i++){

 if(hs[i].nodeType==1){

  var fn=hs[i].firstChild;

      var a=hs[i].removeChild(fn);

  a=null;

 }

 }

}

</script>


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

http://img1.sycdn.imooc.com//5785bee400012abf05030406.jpg加一个clearText();在for里面可以完成一次删除  而且很简单

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

MMJiao 回复 Tmuer

clearText()是再次调用该函数
2016-12-08 回复 有任何疑惑可以回复我~
#2

在天一涯 回复 MMJiao

不会死循环吗?理解不了,抓狂
2018-02-12 回复 有任何疑惑可以回复我~
while(content.childNodes.length) {
    content.removeChild(content.lastChild);
  }

这样不是最简单?(抖个机灵跑

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

鱼鱼鱼iii

不错哦
2016-08-18 回复 有任何疑惑可以回复我~
#2

BaconNUDT

我也是用的这个。。。
2017-02-25 回复 有任何疑惑可以回复我~

所以你们在都用了答主的代码后难道问题都解决了?我怎么还是一次性删除三个?

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

上面说的废话一大堆:出现要点击多次的情况才能删除的情况,本质原因,都是你忽略了childNodes是一个会实时更新的数据结构(当你对目标节点进行操作的时候),childNodes is live list。

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

节点删除、添加是实时反映在节点树中的,这也是为什么说诸如childNodes获取到的是类似数组的nodeList,因为跟数组是不一样的。

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

 for(var i=0;i<num;i++){

      content.removeChild(oh[0]);

  }

把i换成0就可以了,list是不断推进的,不理解的可以开chrome调试面板看每一步参数的值

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

<script type="text/javascript">

function clearText() {

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

  // 在此完成该函数

  var len=content.childNodes.length

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

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

      document.write("删除节点的内容为:"+x.innerHTML+"</br>");

  }

}

为什么在IE浏览器中显示的一直都是  undefined,并且只有一行,但是在其他的浏览器中显示的都正常,共有11行?

效果如下图:

56d2a98500012d2a02570239.jpg

56d2a985000144c705000314.jpg


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

举报

0/150
提交
取消

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

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