qq_WT_9
2018-07-13 15:55
<!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");
// 在此完成该函数
for(var i=0;i<content.length;i++){
var x=content.removeChild(content.childNodes[i])
}
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>
i的条件写错了,应该是content的所有子节点长度。另外还要注意非IE浏览器会把空白当成节点,还有,每次删除节点,整个数组会发生变化,原来索引1的值会变成索引0,而i经过循环变成了1,索引0就删不掉了,这个代码会造成隔行删的情况,需要想想如何修改。
第一个回答的为什么要嘲讽别人啊。
而且content.childNodes[i]这个没有问题吧,遍历的是content下的子节点啊。
有问题的是i的取值,应该是i<content.childNodes.length。取对了之后是可以删除的,但是不能一次删去,可以想想为什么再去尝试,加油~
应该是由于删除了子代节点之后,集合变了的关系,这样写可以一次删除
<!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 children=content.childNodes;
var length=children.length;
while(children!=null){
var x=content.removeChild(children[0]);
x=null;
}
/*
这个不能一次完成删除,应该是因为children被删除
之后出现改变的原因
for(var i=0;i<length;i++){
var x= content.removeChild(children[i]);
x=null;
}*/
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>
id获得的是一个值 不是一个数组 你对一个数组进行遍历 牛逼
for(var i=0;i<content.childNodes.length;i++){ }; for循环里面遍历的数组没取对
var x=content.removeChild(content.childNodes[i]) 是不是少了一个“;”
仔细把理论看一下再写代码,真的。。这样对你有好处
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题