为什么把return x注释掉之后 点一次按钮没有反应,点第二次就直接删了三个节点,求大佬指点一下

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

qq_慕丝0295148

2019-10-22 18:17

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>


<body>

<div id="content">

  <h1>html</h1>

  <h1>php</h1>

  <h1>javascript</h1>

  <h1>jquery</h1>

  <h1>java</h1>

</div>


<script type="text/javascript">

function clearText() {

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

  // 在此完成该函数

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

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

      x = null

      return x

  }

  

}

</script>


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


</body>

</html>


写回答 关注

2回答

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

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


  • 剑指offer
    2019-10-25 16:49:54

    你这是经典的错误写法。

    第一,每删除一个节点,content.childNodes.length的值会变化(减少),导致循环提前终止。

    点击一次按钮,就只会删除一半的节点,因为i在增加的同时,content.childNodes.length却在减少。

    第二,第一次点按钮不是没反应,而是因为存在空白节点,第一次执行删除了所有的空白节点。第二次点按钮,删除了一半的非空节点。

    修改:

    var len =content.childNodes.length;
      for (var i =0;i<len;i++){
          content.removeChild(content.childNodes[0])
     }

    保证循环执行11次(6个空白节点,5个非空节点),每次删除第一个节点后,原来的第二个节点就变成了第一个节点。

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题