关于javascript removeChild的那些事

今天给removeChild搞死了,弄了几个小时,上代码

<ul id="myList">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul> <button onclick="test()">删除列表</button> < script >
function test(){
var list = document.getElementById("myList");
var childrens = list.getElementsByTagName('li');
for(var i = 0 , len = childrens.length; i < len; i++){
list.removeChild(childrens[i]);
}
}
< /script >

上面这段代码可运行而且不会报错,但是怎么弄都删除不了全部。怎么整都是只删除3个节点,,,,

后来经过调试才知道原来list在removechildrens的时候,childrens的长度不断的在变化,所以删除到第四个节点的时候i=3,而childrens里只剩3个节点了所以childrens[3]等于undefined,所以每次只能删除3个节点 ,解决方案如下

    #修改for循环
for(var i = 0 , len = childrens.length; i < len; i++){
list.removeChild(childrens[0]);
}
#使用while循环
var dom = childrens[0];
while(dom){
list.removeChild(dom);
dom = childrens[0];
}

2014-08-12 修改

今天突然间用到document.querySelectorAll这个html5新的选择器,然后使用上面的那种处理方式,始终得不到结果而且还报错,,NND

对着错误看了许久,然后在调试了一下,原来document.querySelectorAll这个函数返回的跟document.getElementsByTagName返回的处理方式不一样

document.querySelectorAll这函数完全可以使用如下操作

  var list = document.querySelector("#myList");  // 返回单个对象
var childrens = list.querySelectorAll('li'); // 返回对象数组
for(var i = 0 , len = childrens.length; i < len; i++){
console.log(i);
list.removeChild(childrens[i]);
}

document.querySelectorAll函数返回的数组完全不会有引用依赖,就是返回一个全新数组。

如果有更好的方案,欢迎贴上来学习学习

关于javascript removeChild的那些事的更多相关文章

  1. 细说JavaScript单线程的一些事

    标签: JavaScript 单线程 首发地址:码农网<细说JavaScript单线程的一些事> 最近被同学问道 JavaScript 单线程的一些事,我竟回答不上.好吧,感觉自己的 Ja ...

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

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

  3. (转载)Javascript removeChild()不能删除全部子节点的解决办法

    在Javascript中,只提供了一种删除节点的方法:removeChild().removeChild() 方法用来删除父节点的一个子节点. 语法: parent.removeChild(thisN ...

  4. 关于JavaScript继承的那些事

    在JavaScript中,对象的创建可以脱离类型(class free),通过字面量的方式可以很方便的创建出自定义对象. 另外,JavaScript中拥有原型这个强大的概念,当对象进行属性查找的时候, ...

  5. 走进javascript——数组的那些事

    Array构造器 如果参数只有一个并且是Number类型,那么就是指定数组的长度,但不能是NaN,如果是多个会被当做参数列表. new Array(12) // (12) [undefined × 1 ...

  6. Objective-C与JavaScript交互的那些事

    http://www.cocoachina.com/ios/20160127/15105.html 最近公司的运营瞎搞了个活动,其活动要服务端提供数据支持,web前端在微信公众账号内作为主要的运营阵地 ...

  7. Javascript中那些你不知道的事之-- false、0、null、undefined和空字符串

    话不多说直接进入主题:(如果有写的不对的地方欢迎指正) 我们先来看看他们的类型分别是什么: typeof类型检测结果 结论:false是布尔类型对象,0是数字类型对象,null是object对象,un ...

  8. JavaScript闭包的那些事

    JavaScript闭包 1.函数在JavaScript中的地位 在介绍闭包之前,可以先聊聊函数在JavaScript中的地位,因为闭包的存在是与函数息息相关的. JavaScript之所以可以称之为 ...

  9. JavaScript能做的事 是不是jQuery都能做>?

    比如修改表单中的action 并实现跳转  问题是此时没有点击表单中的submit 提交按钮?

随机推荐

  1. 聊聊Vue.js组件间通信的几种姿势

    写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出. 文章的原地址:https://github.com/a ...

  2. .NET采集数据,放入数据库总结

    第一次做采集Json的还简单一些但是XML的简直了......... JSON //采集数据 public string GetBetRecordToRepository()//随便你返回什么 { t ...

  3. .Net Web开发技术栈

    有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什么,怎么系统的学,为此我以我微薄之力总结归纳写了一篇.Net web开发技术栈,以此帮助那些想学,却不知 ...

  4. JAVA基础知识总结:七

    一.面向对象编程 1.什么是面向对象? 万物皆对象 案例一:我想吃大盘鸡 面向过程 面向对象 1.我自己去买一只鸡 1.委托一个会砍价的人去帮忙买鸡 2.我自己宰鸡 2.委托一个胆大的人宰鸡 3.我自 ...

  5. win7与centos虚拟机的共享文件夹创建

    本文在win7环境下,在virtualbox5.0.16中的虚拟机centos6.7创建linux虚拟机与win7主机的共享文件夹. 首先点击virtualbox上"设置"按钮,在 ...

  6. url编码&&PHP大法

    URL编码 Url编码通常也被称为百分号编码(Url Encoding,also known as percent-encoding),是因为它的编码方式非常简单,使用%百分号加上两位的字符--012 ...

  7. struts2系列(四):struts2国际化的多种方式

    一.struts2国际化原理 根据不同的Locale读取不同的文本. 例如有两个资源文件: 第一个:message_zh_CN.properties 第二个:message_en_US.propert ...

  8. Idea报错Check $M2_HOME environment variable and mvn script match.

    -Dmaven.multiModuleProjectDirectory=$M2_HOME

  9. 读书笔记-你不知道的JS中-函数生成器

    这个坑比较深 可能写完我也看不懂(逃 ES6提供了一个新的函数特性,名字叫Generator,一开始看到,第一反应是函数指针?然而并不是,只是一个新的语法. 入门 简单来说,用法如下: functio ...

  10. Python 数据分析Windows环境搭建

    1. 下载相应的Python软件并安装 python-3.6.0-amd64 2.  配置相应的环境变量path ;C:\Users\Administrator\AppData\Local\Progr ...