请问怎么输出是underfined

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

DOFOR

2017-08-07 20:15

function clearText() {

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

  // 在此完成该函数

  var x=content.childNodes;

  var num=x.length;

  for(var i=0;i<num;i++)

  {

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

      document.write("删除的节点:"+j.innerHTML+"<br />");

  }

}

输出结果:

删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined

写回答 关注

2回答

  • 慕数据1228707
    2017-08-07 23:02:33
    已采纳

    <!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");

      // 在此完成该函数

      var x=content.childNodes;

      var num=x.length;

      for(var i=0;i<num;i++)

      {

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

          document.write("删除的节点:"+j.innerHTML+"<br />");

          i--;

      }

    }

    </script>

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

    </body>

    </html>

    1、有空标签,所以会输出undefined;

    2、没删除一个子节点,content的子节点数目都会减少一个,所以每次for循环让i自减1.

    慕移动594...

    但是为什么给的例子里删除完后,还可以输出值,不是说要x=null才会完全删除吗

    2018-03-24 16:48:24

    共 4 条回复 >

  • 慕数据1228707
    2017-08-13 13:45:53

    不是num自减1,这样没有效果,应该是i自减1,因为一个for循环中i都会加1,但是节点数目会减1,这样就会出问题,其实这样写for循环不好,可以使用while循环

    function clearText() {

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

      // 在此完成该函数

    len=content.childNodes.length;

    while(content.firstChild){

    content.removeChild(content.firstChild);

    }

    }

    每次删除第一个节点后,第二个节点就会变成第一个节点,所以一直检测第一个子节点就行


    DOFOR

    恩恩,懂了

    2017-08-13 14:01:00

    共 1 条回复 >

JavaScript进阶篇

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

468065 学习 · 21891 问题

查看课程

相似问题