如果div里有这么些内容:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
<title>iScroll demo: simple</title>

<script type="text/javascript">
function deleteData(){  

  }  

</script>

<style type="text/css" media="all">
body,ul,li {
padding:0;
margin:0;
border:0;
}

body {
font-size:12px;
-webkit-user-select:none;
    -webkit-text-size-adjust:none;
font-family:helvetica;
}

</style>
</head>
<body>

  <div ><input type="submit" name="button" id="button" value="删除li节点" class="button gray"  onclick="deleteData()" /> </div> 
 
<div > 
<ul id="thelist">
   <li>Pretty row 1</li>
<li>Pretty row 2</li>
<li>Pretty row 3</li>
<li>Pretty row 4</li>
<li>Pretty row 5</li>
<li>Pretty row 6</li>
<li>Pretty row 7</li>
<li>Pretty row 8</li>
<li>Pretty row 9</li>
<li>Pretty row 10</li>

<li>Pretty row 40</li>
   
</ul>

</div>

</body>
</html>

如今要通过JavaScript的功能。将它们清空。

尽管能够通过一句代码直接实现:

document.getElementById("content").innerHTML=""

可是本文里主要讨论 removeChild 函数。

非常想当然地以为借助以下的代码就能完毕:

function deleteData(){  
         
        var el = document.getElementById('thelist');
        var liNodes = document.getElementsByTagName("li");
          alert(liNodes.length);   
           for(var i = 0; i < liNodes.length; i++){ 
               alert("删除"+i+"   liNodes[i]="+ liNodes[i]);   
                 el.removeChild(liNodes[i]);                
              //<--  el.removeChild(liNodes[i]);                                         
                } 
  } 

没想到,点击了按钮后。居然仅仅清除掉1、3、5...,而2、4、6....居然没有消失,

问题从一開始就产生了:

删除掉第一个节点后,后面节点的顺序所有发生了变化:原来的第二个节点往前蹭,成为新的第一个节点;原来的第三个节点,成为第二个节点……

于是呢,接下来原本是要删除第二个节点的,却将最原始的第三个节点给删除掉了。

终于,并没有所有删除,仅仅删除掉1、3、5。留下了2、4、6。

语法没有错误,可是得不到所要的结果,这就是算法上面的错误!

该怎样修正呢?

“顺序删除”不行,那就“逆序删除”吧。将 for 语句改动一下:

function deleteData(){  
   var el = document.getElementById('thelist');
        var liNodes = document.getElementsByTagName("li");
          alert(liNodes.length);   
             for(var i = liNodes.length-1; i >=0; i--){   
               alert("删除"+i+"   liNodes[i]="+ liNodes[i]);   
                 el.removeChild(liNodes[i]);                
              //<--  el.removeChild(liNodes[i]);                                         
                }        
  }  

试试吧,成功了。还能够使用以下方法:

function deleteData() {
  var el = document.getElementById('thelist');
        var liNodes = document.getElementsByTagName("li");
          alert(liNodes.length);   
for (var i=0;i<el.childNodes.length;i++){
 var childNode = el.childNodes[];  //总是删除第一个,是不是更简单
 el.removeChild(childNode);
}
}

完毕代码例如以下所看到的:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
<title>iScroll demo: simple</title>

<script type="text/javascript">
function initData(){  
   var el = document.getElementById('thelist');
        var liNodes = document.getElementsByTagName("li");
          alert(liNodes.length);   
             for(var i = liNodes.length-1; i >=0; i--){   
               alert("删除"+i+"   liNodes[i]="+ liNodes[i]);   
                 el.removeChild(liNodes[i]);                
              //<--  el.removeChild(liNodes[i]);                                         
                }        
  }  

</script>

<style type="text/css" media="all">
body,ul,li {
padding:0;
margin:0;
border:0;
}

body {
font-size:12px;
-webkit-user-select:none;
    -webkit-text-size-adjust:none;
font-family:helvetica;
}

</style>
</head>
<body>

  <div ><input type="submit" name="button" id="button" value="删除li节点" class="button gray"  onclick="initData()" /> </div> 
 
<div > 
<ul id="thelist">
   <li>Pretty row 1</li>
<li>Pretty row 2</li>
<li>Pretty row 3</li>
<li>Pretty row 4</li>
<li>Pretty row 5</li>
<li>Pretty row 6</li>
<li>Pretty row 7</li>
<li>Pretty row 8</li>
<li>Pretty row 9</li>
<li>Pretty row 10</li>

<li>Pretty row 40</li>
   
</ul>

</div>

</body>
</html>

html5中JavaScript删除全部节点的更多相关文章

  1. openstack中彻底删除计算节点的操作记录

    在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...

  2. redis cluster中添加删除重分配节点例子

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢. 一,redis cluster命令行     //集群(cluster)  CLUSTER INFO 打 ...

  3. javascript删除元素节点

    1.删除元素父节点 function removeElement(_element){ var _parentElement = _element.parentNode; if(_parentElem ...

  4. [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)

    Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...

  5. 使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)

    getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test ...

  6. html5中的dom中的各种节点的层次关系是怎样的

    html5中的dom中的各种节点的层次关系是怎样的 一.总结 一句话总结:Node节点是所有节点的基类,所以都继承它的方法 1.dom提供在js中动态修改html标签的作用 比如增加修改标签等,并且是 ...

  7. javascript中的删除方法

    可能呢再开发的过程中呢使用的不是很多,但是碰上呢可以注意下 1.比如: var x = 10; delete x; console.log(x); 结果是多少,是10,不是异常也不是undefined ...

  8. GMF中,删除节点和连线的另一种实现

    问题 在GMF中,如果需要programmatically删除节点或连线,在google中我们很容易搜索到<GMF中,删除节点和连线的实现>一文(我并不确定这是原创作者的原始链接),很多人 ...

  9. 【javascript】html5中使用canvas编写头像上传截取功能

    [javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...

随机推荐

  1. Latex中cls和sty文件有何区别?

    Latex中cls和sty文件有何区别? 资源 本文对 LaTeX 中 .cls 和 .sty 文件进行介绍,主要参考了 What are .cls and .sty files?How are th ...

  2. 原创科幻短篇《Bug》

    这回不是纯科幻,夹了点玄幻. 以下正文: 大一的时候,李双休谈了个女朋友,俩人学校相距不远,周末约一起看电影.那是李双休第一次自己坐公交,坐反了,绕城一周,电影开始后一个小时才到,就赶上看了个片尾彩蛋 ...

  3. MVC5 IIS7 403错误

    问题背景 MVC5部署到IIS7中显示403错误. 解决方案 <system.webServer> → <modules> 节点下的 ApplicationInsightsWe ...

  4. 关于python中pika模块的问题

    工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经 ...

  5. js判断移动端是否安装某软软件,安装直接打开相应的链接,否则跳转到下载商店方法

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. r里面如何实现两列数据合并为一列

    library(dplyr) unite(mtcars, "vs_am", vs, am) Merging Data Adding Columns To merge two dat ...

  7. 垃圾wps弹出,现在连关闭按钮都不给了

    垃圾wps弹出,现在连关闭按钮都不给了,有点起色就变得相当垃圾.

  8. Javascript 运行上下文和作用域链

    一.作用域Scope和上下文Context 在javascript中,作用域scope和上下文context是两个不同的概念.每个函数调用都会伴随着scope和context,从本质上来说,scope ...

  9. Linux服务器性能分析与调优

    一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...

  10. git使用——推送本地文件到远程仓库

    捣鼓了一下午之后总结如下:   1.首先可以照着这个链接里面博主给出的详细方法进行操作和配置: http://www.open-open.com/lib/view/open1454507333214. ...