removeChild()问题

今天做慕课网上JavaScript进阶课程中9-14节中的课后练习,9-14内容为删除节点removeChild(),任务如下:

<!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");
  //在此完成该函数 
  }
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>

按课程上例子的样子我做的代码:

<script type="text/javascript">
function clearText() {  
  var content=document.getElementById("content");
  var x=content.getElementsByTagName("h1");
for (var i=0;i<x.length;i++){
      content.removeChild(x[i]);
  }
}
</script>

但在运行时发现了问题,点击按钮后,总是1、3、5这样的消除,2、4留下,然后成为1、2,点击按钮后,再次只消除单数的。语法上是没有错误的,百思不得其解,就去找百度,搜索到一个博客上提到此问题,但他也是只提供了解决的方法,只是怀疑说是在算法上出问题,算法我不懂啊。。。。。。按博主提供的方法,把for循环i的顺序改变下:

1 function clearText() {      
2   var content=document.getElementById("content");
3   var x=content.getElementsByTagName("h1");
4     for (var i=x.length-1;i>=0;i--){
5       content.removeChild(x[i]);
6   }
7 }
8 </script>

尝试把i=x.length-1去掉减1,代码无法运行。x.length的值为5,x数组下标为0、1、2、3、4。不减1的话,在执行 content.removeChild(x[i]) 时,i=5,是否是因为Html中并没有第五个h1节点,所以script运行出错?只能先这么认为,以后的学习中再去验证。

 

posted @ 2015-10-10 12:14  火浴凤凰  阅读(271)  评论(0编辑  收藏  举报