问答详情
源自:9-14 删除节点removeChild()

为什么要删3次才能全部删除掉?

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>


<body>

<div id="content">

  <h1>ht5ml</h1>

  <h1>p5hp</h1>

  <h1>ja5vascript</h1>

  <h1>jqu5ery</h1>

  <h1>jav5a</h1>

</div>


<script type="text/javascript">

function clearText() {

  var content=document.getElementById("content");

  // 在此完成该函数

  var head=document.getElementsByTagName("h1");

  alert(head.length);

  for(var i=0;i<5;i++)

  {

      alert(i);

      content.removeChild(head[i]);

  } 

}

</script>

<button onclick="clearText()">清除节点内容</button>

</body>

</html>


提问者:jsteven 2016-02-19 19:12

个回答

  • 三月六日
    2016-02-19 21:39:25

    问题在于你每remove一次,head里的元素就被去掉一个,然后后面的元素就相当于前移了一位

    例如,你删掉第一个元素ht5ml之后,第二个元素p5hp就变成了第一个元素,但是你接下来是删除第二个元素,现在第二个元素已经是ja5vascript了,因此p5hp就没有被删掉,往后以此类推

    要解决这个问题,在remove之后加一句 i--