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

为什么会有不一样的效果?

为什么会有不一样的效果?


  //法二,一次性清除节点内容
/*   
   for(var i=content.childNodes.length-1;i>=0;i--){
      var chnode=content.childNodes[i];
      content.removeChild(chnode);  
   }
*/

  //法三,多次方清除节点内容
/*
   for(var i=0;i<content.childNodes.length;i++){
    var chnode=content.childNodes[i];
    content.removeChild(chnode);  
  }
*/

提问者:慕慕1251584 2016-08-14 00:16

个回答

  • qq_梓焱_03570125
    2016-08-14 09:50:27

    每清理一个子节点,content.childNodes.length就减1,最后一个子节点节点的角标也会减1。

    所以法二一直在循环清除每个新的子节点序列中最后一个子节点,直到没有子节点。

    而法三,第一次循环,首先子节点序列长度在递减,最多清除一半,可能还包含空白节点。有点类似二分法。所以要清除多次,每次差不多清一半。