<!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 childnodes = content.childNodes; for(var i = 0; i< childnodes.length; i++){ content.removeChild(childnodes[i]); } } </script> <button onclick="clearText()">清除节点内容</button> </body> </html>
1)var arr=content.getElementsByTagName('li');
获取的childnodes对象时一个动态集合对象,而非静态的
什么意思呢,就是当你添加或删除一个元素时,childnodes对象时会立马变化的
2)你在for循环中每次都在计算长度childnodes.length
那么结合1)出现的结果是,你删除一个元素,长度就会少1,那么后面的元素你就永远删除不了
你算下,初始长度为5,你可以删除3个,点击删除1个,点击全部删除
请问这个问题您解决了吗,我也是碰到这个问题想不通
这里的5指你得见的部分h1,方便测试。
你没有排除空白的文本节点,打印一下childnodes.length,可以看到它不是你想象中的5。因为每个h1标签后都有一个空白的文本节点,所以你必须点击按钮三四次才能完全清除