关于javascript removeChild的那些事
关于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的那些事的更多相关文章
- 细说JavaScript单线程的一些事
标签: JavaScript 单线程 首发地址:码农网<细说JavaScript单线程的一些事> 最近被同学问道 JavaScript 单线程的一些事,我竟回答不上.好吧,感觉自己的 Ja ...
- [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)
Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...
- (转载)Javascript removeChild()不能删除全部子节点的解决办法
在Javascript中,只提供了一种删除节点的方法:removeChild().removeChild() 方法用来删除父节点的一个子节点. 语法: parent.removeChild(thisN ...
- 关于JavaScript继承的那些事
在JavaScript中,对象的创建可以脱离类型(class free),通过字面量的方式可以很方便的创建出自定义对象. 另外,JavaScript中拥有原型这个强大的概念,当对象进行属性查找的时候, ...
- 走进javascript——数组的那些事
Array构造器 如果参数只有一个并且是Number类型,那么就是指定数组的长度,但不能是NaN,如果是多个会被当做参数列表. new Array(12) // (12) [undefined × 1 ...
- Objective-C与JavaScript交互的那些事
http://www.cocoachina.com/ios/20160127/15105.html 最近公司的运营瞎搞了个活动,其活动要服务端提供数据支持,web前端在微信公众账号内作为主要的运营阵地 ...
- Javascript中那些你不知道的事之-- false、0、null、undefined和空字符串
话不多说直接进入主题:(如果有写的不对的地方欢迎指正) 我们先来看看他们的类型分别是什么: typeof类型检测结果 结论:false是布尔类型对象,0是数字类型对象,null是object对象,un ...
- JavaScript闭包的那些事
JavaScript闭包 1.函数在JavaScript中的地位 在介绍闭包之前,可以先聊聊函数在JavaScript中的地位,因为闭包的存在是与函数息息相关的. JavaScript之所以可以称之为 ...
- JavaScript能做的事 是不是jQuery都能做>?
比如修改表单中的action 并实现跳转 问题是此时没有点击表单中的submit 提交按钮?
随机推荐
- UVa437,The Tower of Babylon
转:http://blog.csdn.net/wangtaoking1/article/details/7308275 题意为输入若干种立方体(每种若干个),然后将立方体堆成一个塔,要求接触的两个面下 ...
- C#编译器和CLI的安装
为了完成C#程序编译和运行,需要安装代码对应版本的编译器和CLI(公共语言框架)平台. (部分内容摘自<C#本质论>) 针对主流的CLI平台(Microsoft .NET),有两种安装方案 ...
- java的windows自动化-自动运行java程序
那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...
- LeetCode 152. Maximum Product Subarray (最大乘积子数组)
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 第三方软件内嵌IE出现纵向滚动条消失的BUG,奇葩的IE BUG 真是无奇不有
混了这么久 竟然还有这样难以解决的BUG,最后都跑到英文的MSDN上提问了,因为谷歌都谷不出朕的忧伤了,有木有. 提问原文如下:https://social.msdn.microsoft.com/Fo ...
- 深入理解ES6之—set与map
Set是无重复值的有序列表.Set会自动移除重复的值,因此你可以使用它来过滤数组中重复的值并返回结果. Map是有序的键值对,其中的键允许是任何类型. Set和Map是es6新增的两个数据集合. Se ...
- Android开发之漫漫长途 Ⅱ——Activity的显示之Window和View(2)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- 修改oracle服务器端字符集
----设置字符集步聚------- conn /as sysdba; shutdown immediate; startup mount; alter system enable restricte ...
- 03.javabean
一.javabean简介 1, 作用:一个可重用组件,在jsp开发中可减少重复代码,使HTML与JAVA代码分离便于日后维护. 2, javabean类要求: 所有类必须放在包中,且为public ...
- 创建并在项目中调用SQLSERVER存储过程的简单示例
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...