沈凌松233
2017-02-23 20:24
<!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 k=0;
var content=document.getElementById("content");
var a=content.childNodes;
for(var i=0;i<a.length;i++){
content.removeChild(a[i]);
//k++;
}
// document.write(k);
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>
他子节点长度是随着FOR循环不断变化的 可以在for循环前把长度存入一个变量中
<!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.length
var num =0
for (i=0;i<x;i++){
content.removeChild(content.firstChild);
num = num+1
console.log(num)
}
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>这样就可以实现一次全清
当i=3的时候 子节点的长度就只有2,循环就不会继续执行了
for(var i=0; i<content.childNodes.length;){
content.removeChild(content.childNodes[i]);
}如果非要用for的话,这样就可以了。不需要对i加一,其实这个用while更简单,直接判断子节点个数有没有到0就可以。
看了下置顶说不能用length作为判断条件 所以做了修改
function clearText() {
//var k=0;
var content=document.getElementById("content");
var a=content.childNodes;
var k=a.length;
for(var i=0;i<k;i++){
content.removeChild(a[i]);
a[i]=null;
//k++;
}
// document.write(k);
}
然而还是不行 求大神解惑
JavaScript进阶篇
469343 学习 · 22585 问题
相似问题