解决方案 »

  1.   


    <script type="text/javascript">
        var f_obj = document.body;
        alert(f_obj.childNodes.length);
        for (var i = f_obj.childNodes.length-1; i>0; i--) {      
            document.body.removeChild(f_obj.childNodes[i]);
        }
    </script>
    childNodes 包含一些文本节点
      

  2.   

    每删除一个节点,f_obj.childNodes.length的值都会减1
    这样,每次循环的循环结束条件都不一样了。<!doctype html>
    <html>
    <head>
    <title></title>
    </head>

    <body>
    <div id="f">sss</div>
    <div id="f">ddd</div>
    <div id="f">fff</div>
    </body>
    </html><script type="text/javascript">
    var f_obj = document.body;
    var l = f_obj.childNodes.length;//提前保留f_obj.childNodes.length的原始值,就不会影响循环结束条件了
    for (var i = 0; i < l; i++) {
    alert(i);
    document.body.removeChild(f_obj.firstChild);
    }
    </script>childNodes.length输出8是因为有文本节点 
      

  3.   


    但我怎麼數都只有6個啊,哪裡有8個?
    三個div,sss,ddd,fff
      

  4.   


    但我怎麼數都只有6個啊,哪裡有8個?
    三個div,sss,ddd,fff
    标准浏览器空白节点也算一个节点,你用IE8-就是输出4了、、<script type="text/javascript">
       var b = document.body;
        while(b.childNodes.length>0)b.removeChild(b.childNodes[0])
    </script>你从0开始删除回导致childNodes不断更新,导致删除不完
      

  5.   


    源代码中的空格tab字符和换行也算文本节点
    8个元素中三个div,四个文本节点,还有一个是<script>虽然在源代码中<script>是写在</html>之后,但这在文档结构中是不允许的,所以<script>被移动到<body>中