为什么一开始要按两下才开始删除节点,而且一下删除两个。后面就是按一下删除一个了?

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

努力学习碳

2019-11-11 09:18

<script type="text/javascript">function clearText() {  var content=document.getElementById("content");  var a=content.childNodes;  // 在此完成该函数  for(i=0;i<a.length;i++){      var r=content.removeChild(content.childNodes[i]);      r=null;  }  }</script>


写回答 关注

6回答

  • 走馬勿观花
    2020-03-22 18:36:44

    加上

    x = null;

  • kaluroro
    2020-01-20 15:50:43

    我也是这样,后面想明白了。这是因为删除子节点的同时,子节点数组的数量也减少了。以你的代码为例,最开始a数组长度为11(包含了若干空值):["","html","","php","","javascript","","jquery","","java",""]

    第一次点按钮时,for i=0时,删除了第一个空值。此时数组的第一个元素被删掉了,所以i=1时,删除的其实是第二个空值,一次类推,恰巧把所有空值给删除了,所以你点第一次按钮就看到没有任何变化!

    当你第二次点按钮时,数组变成了):["html","php","javascript","jquery","java"]。同上,这次删除了html、javascript、java,所以剩下了php和jquery!

    第三次点按钮,剩下了jquery。

    第四次点按钮,才删完。

    所以说,要一次性全删完,要改进算法。

    粥可温Ni

    牛皮,哈哈哈。我理解了

    2021-05-22 19:57:29

    共 1 条回复 >

  • 老张家有女神
    2019-11-20 15:20:01

    <script type="text/javascript">

    // 清除空白节点

    function cleanWhitespace(element)   

    {   

        for(i=0; i<element.childNodes.length; i++)   

        {   

            var node = element.childNodes[i];   

            if(node.nodeType == 3 && !/\S/.test(node.nodeValue))   

            {   

                node.parentNode.removeChild(node);   

            }  

        }   

    }   

    cleanWhitespace(document.getElementById("content"));


    function clearText() {

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

      // 在此完成该函数

      var xchild=content.childNodes;

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

         var xclose=content.removeChild(xchild[i]);

          xclose=null;

          return xclose;

      }

    }

    </script>

    <button onclick="clearText()">清除节点内容</button>


  • 老张家有女神
    2019-11-20 15:09:51

    因为空白节点的问题,除了IE浏览器,其他浏览器都会计算空白节点,第一点执行了,只不过删除的是空白节点,你可以清除空白节点

  • qq_慕仰2425959
    2019-11-19 18:06:48

    我的是点击一下没反应,第二次点击他会直接删除三个。接来下就正常删除了,不知道为啥

  • 慕无忌5493179
    2019-11-17 17:32:56

    function clearText() {

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

      // 在此完成该函数

      var sons = content.childNodes;

      for(var i=sons.length-1;i>0;i--){

          content.removeChild(sons[0]);

      }

      

    }


JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题