Moomin6
2018-10-12 14:47
<!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;
for(var i=x.length-1; i>=0 ; i--){
content.removeChild(x[i]);
}
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>
假设你所说的 i++ 是下面这个:
var x=content.childNodes; for(var i=0; i<x.length ; i++){ content.removeChild(x[i]); }
上面代码实现的效果也不是一个一个地删除,而是跳着删除。如点按钮一下,下面 5 个标签中的 1、3、5 会先删除,再点按钮一下才会把剩下的 2 删除,第三次按钮才把 4 删除。
<h1>html</h1> // 1 <h1>php</h1> // 2 <h1>javascript</h1> // 3 <h1>jquery</h1> // 4 <h1>java</h1> // 5
因为当先把第一个子节点删除后,后面的子节点的索引就重新编号了:原来的第2个子节点会变成第1个子节点,第3个子节点会变成第2个子节点,但循环变量 i 是从 0、1、2... 顺序增长,所以会出现上述跳着删除的现象。
但“i--”(如你所写的代码)的情况下是从最后一个子节点开始删除,并不会影响前面子节点的索引值,所以一次遍历完 i 后,即可全部删除子节点。
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题