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 οnclick="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运行出错?只能先这么认为,以后的学习中再去验证。

 

转载于:https://www.cnblogs.com/hyfhxz/p/4866467.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值