请教任务代码问题

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

素本往后

2016-12-03 19:17

 function clearText(){
        var content = document.getElementById("content");
        var node = content.childNodes;
        var n = node.length;
        alert(n);
        for(var i=0;i<n;i++){
            content.removeChild(node[i]);
        }
    }
</script>

为何不能一次性删除,我在进入循环之前已经用var node和var n 保存了长度和原数组了,为什么node在循环里的长度还是在变化,有点想不明白,求指教。

写回答 关注

1回答

  • 慕粉3576140
    2016-12-03 23:06:34

    <script type="text/javascript">

    function clearText(){

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

            var node = content.childNodes;

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

                content.removeChild(node[i]);

                i--;

            }

        }

    因为childNodes获得子节点的数据时实时的,也就是说你减一个,它的长度也会减一。后面那个循环的时候i每次加一,长度减一。就相当于每次减了2个,所以导致你的n第一次是5,第二次是2。這中情况。所以每次循环把多减掉的一加上取就可以。  這是我的理解。

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题