<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 childNode = content.childNodes[0];
content.removeChild(childNode);
}
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
因为你在判断条件里面设置了i<content.childNodes.length,这样设置就会出现你说的这种问题,给你分析下,IE下执行,节点个数5个,当我点一次删除按钮。
注意:5个节点分别对应下标是从0开始:
i=0 content.childNodes.length=5 0<5 删除第一个节点后,继续循环
i=1 content.childNodes.length=4 1<4 删除第二个节点后,继续循环
i=2 content.childNodes.length=3 2<3 删除第三个节点后,继续循环
i=3 content.childNodes.length=2 3<2 不成立,所以不继续。
这也就是为什么你点击第一次就删除了三个节点原因。