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

这两段代码意思不是一样的吗?

https://img1.sycdn.imooc.com//5af4f61400013fd609240896.jpg

我有点犯晕,会的教一下。这两段代码的区别。谢谢了。 

正在回答

6 回答

不一样,如果在外面申明node1 = content.childNodes.length 后再执行循环 for (i = 0; i < node1; i++)的话,每次执行for循环的时候node1的值就不会变了;

如果使用 for (i = 0; i < content.childNodes.length; i++) 的话每次执行 for 循环的时候 content.childNodes.length的值都在变小,因为每次执行一次 for循环都移除了一个length 长度,就是截图中央那段话表达的意思。

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

为什么同学代码中最高票回答的第一个代码能正常运行,按理说应该无法一次删除啊?

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

      if(content.childNodes[i].nodeType!=1){   

         continue;  

      }else{

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

      }

         

      }


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

果然有个地方不一样哎,多谢

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

求助呀

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

hhahaha 提问者

大概意思就是length的值没有跟着这个函数变化,所以效果是一样的,变了才是错误的。你这个只是把原来的代码改了一个形式而已
2018-05-22 回复 有任何疑惑可以回复我~

<script type="text/javascript">

function clearText() {

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

  // 在此完成该函数

// var all = content.childNodes.length;

// for(i=0;i<all;i++)

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

//    x=null;

// }

  

   var all = content.childNodes;

  for(i=0;i<all.length;i++)

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

     x=null;

  }

}

</script>

为什么我用这两种方法写出来的效果是一样的?都不太正常啊

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

hhahaha 提问者

你这两段代码的意义好像是一样的,我不知道怎么解释给你听,我也是小白,你对比一下我发问题那个图,跟你的不一样。加油哦
2018-05-22 回复 有任何疑惑可以回复我~

非常感谢

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

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468043    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

这两段代码意思不是一样的吗?

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