问答详情
源自:9-14 删除节点removeChild()

置顶回答的一些问题..求指导

有一段原话是 :"不要把i<content.childNodes.length做为判断条件"

然后老师接下来的代码中:

 function clearText() {  
 
 var content=document.getElementById("content");
 
  nodel=content.childNodes.length
 
  for(i=0;i<nodel;i++)  {     把这里的nodel替换为content.childNodes.length,那不就跟之前那句话相冲突了吗?
 
      var x=content.removeChild(content.childNodes[0]);  }
 
   }

求大神指教!!!

提问者:超级巨浪大切 2017-09-20 19:29

个回答

  • ThomasKwok
    2017-09-27 22:31:00

    function clearText() {
      var content=document.getElementById("content");
      // 在此完成该函数
      for(var i = 0 ; i < content.childNodes.length ; i ++){//此处content.childNodes.length为动态的,因为循环每进行一次都会删除一个childNode,所以每次循环content.childNodes.length都会减少一个单位长度直到最后为0不满住0<0.
          content.removeChild(content.childNodes[i]); 
          i-- //这里我们用i--抵消了前面的i++ 这样i 就一直为0每次都只删除content.childNodes的第一个childNode
      }
    }

    这是我的代码 .大家一起交流都是学员

  • ThomasKwok
    2017-09-27 22:13:10

    content.childNodes.length在循环时是动态变化的

    你删一个他就少一个,也就是从5一直到0

    但是你 在循环前,也就是开始删除前把他的值 也就是 5 赋值 给了nodel 既  nodel=content.childNodes.length.

    这是一次赋值也就是说 nodel 之后一直是 5 虽然content.childNodes.length变了值 ,但nodel已经是5了也再也和content.childNodes.length没关系了.不管content.childNodes.length怎么变,nodel依旧是5.

    表达能力有点不够 希望能看懂

  • 慕姐4135363
    2017-09-27 12:49:09

    带入循环