关于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. PPT的应用

    ppt是Office中一个制作演示文稿的一个办公软件使阐述过程简明而又清晰,轻松又丰富详实,从而有效表达自己以及与他人沟通,所创建的文件被称为电子演示文稿,其扩展名为.PPT.一个演示文稿由若干张电子 ...

  2. MySQL数据库分区的概念与2大好处(1)

    我们大家都知道通过MySQL数据库分区(Partition)可以提升MySQL数据库的性能,那么到底什么是MySQL数据库分区呢?以及其实际应用的好处的表现有哪些呢?以下的文章就是对这些内容的描述. ...

  3. hash在URL上的用法及作用

    阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http ...

  4. 【ASP.NET MVC 学习笔记】- 15 Unobtrusive Ajax

    本文参考:http://www.cnblogs.com/willick/p/3418517.html 1.Unobtrusive Ajax允许我们通过 MVC 的 Help mothod 来定义 Aj ...

  5. 对Spring事务的一些误解

    提起spring事务,就会让人联想起四大基本特征,五个隔离级别,七大传播特性.相信大多数人都知道这些东西,但是知道是一回事情,能用好真的是另一回事了.在使用Spring事务的时候,我曾遇到过几个比较严 ...

  6. 一起来学linux:NFS服务器搭建

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } nfs是network file system的缩写,作用在于让不同的网络,不同的机 ...

  7. .6-Vue源码之AST(2)

    上一节获取到了DOM树的字符串,准备进入compile阶段: // Line-9326 function compileToFunctions(template,options,vm) { // 获取 ...

  8. 数据分析与展示——NumPy库入门

    这是我学习北京理工大学嵩天老师的<Python数据分析与展示>课程的笔记.嵩老师的课程重点突出.层次分明,在这里特别感谢嵩老师的精彩讲解. NumPy库入门 数据的维度 维度是一组数据的组 ...

  9. Life is a Line

    Life is a Line Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Tot ...

  10. VS2015编译VS2013工程文件出错

    错误:未能从程序集"C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Build.Tasks.v14.0.dll"加载任务工厂&q ...