DOFOR
2017-08-07 20:15
function clearText() {
var content=document.getElementById("content");
// 在此完成该函数
var x=content.childNodes;
var num=x.length;
for(var i=0;i<num;i++)
{
var j=content.removeChild(x[i]);
document.write("删除的节点:"+j.innerHTML+"<br />");
}
}
输出结果:
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
删除的节点:undefined
<!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;
var num=x.length;
for(var i=0;i<num;i++)
{
var j=content.removeChild(x[i]);
document.write("删除的节点:"+j.innerHTML+"<br />");
i--;
}
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>
1、有空标签,所以会输出undefined;
2、没删除一个子节点,content的子节点数目都会减少一个,所以每次for循环让i自减1.
不是num自减1,这样没有效果,应该是i自减1,因为一个for循环中i都会加1,但是节点数目会减1,这样就会出问题,其实这样写for循环不好,可以使用while循环
function clearText() {
var content=document.getElementById("content");
// 在此完成该函数
len=content.childNodes.length;
while(content.firstChild){
content.removeChild(content.firstChild);
}
}
每次删除第一个节点后,第二个节点就会变成第一个节点,所以一直检测第一个子节点就行
JavaScript进阶篇
468065 学习 · 21891 问题
相似问题