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

来源:9-14 删除节点removeChild()

hhahaha

2018-05-11 09:47

https://img3.mukewang.com/5af4f61400013fd609240896.jpg

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

写回答 关注

6回答

  • 皇骑
    2018-05-11 20:39:26
    已采纳

    不一样,如果在外面申明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 长度,就是截图中央那段话表达的意思。

  • 慕移动245989
    2018-05-30 17:14:23

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

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

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

             continue;  

          }else{

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

          }

             

          }


  • 慕慕0159803
    2018-05-22 19:49:50

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

  • 慕慕0159803
    2018-05-22 10:09:39

    求助呀

    hhahah...

    大概意思就是length的值没有跟着这个函数变化,所以效果是一样的,变了才是错误的。你这个只是把原来的代码改了一个形式而已

    2018-05-22 13:48:38

    共 1 条回复 >

  • 慕慕0159803
    2018-05-22 10:09:15

    <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>

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

    hhahah...

    你这两段代码的意义好像是一样的,我不知道怎么解释给你听,我也是小白,你对比一下我发问题那个图,跟你的不一样。加油哦

    2018-05-22 13:44:42

    共 1 条回复 >

  • hhahaha
    2018-05-18 14:59:24

    非常感谢

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题