素本往后
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在循环里的长度还是在变化,有点想不明白,求指教。
<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进阶篇
468194 学习 · 21891 问题
相似问题