博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript---删除元素所引起的 对于NodeList的理解
阅读量:5331 次
发布时间:2019-06-15

本文共 671 字,大约阅读时间需要 2 分钟。

今天开发中遇到的一个比较诡异的问题,让我初窥了DOM的NodeList 不知道我的理解对不对 先说需求: 一个ul里面有若干个li,数目不定,我需要删除除去最后一个的 前面所有的 li; 这样的需求 第一直觉 在ul里面循环 逐个删除 代码如下:
var li = ul.getElementsByTagName('li');var len = li.length;for(var i=0 ; i< len-1; i++){   ul.removeChild(li[i])}

但实际上这样是不行的,行不通~~

原因:当删除掉第一个子元素后,第二个子元素的顺序就动态的变成了0,因为第一个没有了 所以第二个成了第一个 依次类推 这样的话 所谓的删除第二个元素就变成删除第三个元素了

将代码为如下,其实改动很小:

for(var i=0; i

这个思路是 每次都删除第一个元素 这样就可以了

原因是什么呢 我百度了下 不知道得到的答案是不是正确的

NodeList是DOM中一个可以从0开始的标签索引,这种对象一般是可以同时返回多个单节点的DOM方法返回过来的。(如上文的getElementsByTagName('li')),NodeList

是一个动态的对象,对文档树的任何操作将直接反映到这个对象上。比如文档子节点的增删改移动都会使NodeList对象的索引和内容发生变化。

目前得到的答案是这样,先记一下~~

 

转载于:https://www.cnblogs.com/lxin/archive/2012/07/17/2595434.html

你可能感兴趣的文章
Mac 中文输入法失效(不显示选词框)解决办法
查看>>
基于 Laravel 开发博客应用系列 —— 设置 Linux/Mac 本地开发环境
查看>>
C语言基础-第五章
查看>>
CSS的一些命名
查看>>
[LeetCode]Valid Sudoku
查看>>
[leetcode]110BalancedBinaryTree平衡二叉树
查看>>
SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
查看>>
学计算机的你伤不起啊
查看>>
Django+MongoDB批量插入数据
查看>>
GPS坐标换算为百度坐标
查看>>
Linux命令整理-Ubuntu
查看>>
liunx 安装和解压命令
查看>>
【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
查看>>
Ralink RT3290无线网卡驱动安装 (linux)
查看>>
leetcode38. 报数
查看>>
ava集合框架
查看>>
把sublime text2配置的更好用,用到一点写一点
查看>>
构建之法阅读笔记02
查看>>
nodejs,python,sublime和Eclipse的包管理器
查看>>
完善自己的学习方法
查看>>