javascript删除创建多个子节点
问题:对已经有的HTML结构(如下图),按照字符串顺序重新排序DOM结点。
<ol id="test-list"> <li class="lang">Scheme</li> <li class="lang">JavaScript</li> <li class="lang">Python</li> <li class="lang">Ruby</li> <li class="lang">Haskell</li> </ol>
var testList=document.getElementById('test-list'); var childs=testList.childNodes;
var arr=[]; for(var i=0;i<childs.length;i++){ arr[i]=childs[i].innerHTML; testList.removeChild(childs[i]); }
可是并没有删除掉 原因是:因为当你把索引为0的子节点删除后,那么的原来索引为1节点此时它的索引变成0了,而这时变量i已经变成1了,程序继续走时就会删除原先索引为2的现在为1的节点,这样程序运行的结果就是只删除了一半的子节点。
解决方法:从后面往前删除
var arr=[]; for(var i=childs.length-1;i>=0;i--){ arr[i]=childs[i].innerHTML; testList.removeChild(childs[i]); }
运行成功 第三步将arr排序
arr.sort();
for(var i=0;i<arr.length;i++) { var li=document.createElement('li') li.innerHTML=arr[i]; testList.appendChild(li); }
可是并没有创建好(页面没有任何显示),打开控制台有11个undefined 我们先看看刚开始给arr赋值的时候,arr具体的到那些值,按道理就是五个值Haskell,Ruby,Python,JavaScript,Scheme
var arr=[]; for(var i=childs.length-1;i>=0;i--){ arr[i]=childs[i].innerHTML; console.log(arr[i]); testList.removeChild(childs[i]); }
查看控制台结果 竟然多了一半的undefined
解决方法:第二步应该改为
var arr=[]; for(var i=childs.length-1;i>=0;i--){ if(i%2!==0) { arr.push(childs[i].innerHTML); } testList.removeChild(childs[i]); }
思路是arr里面的值不随i控制用push()函数 现在再看看arr的值:
arr.sort(); for(var i=0;i<arr.length;i++) { console.log(arr[i]); }
最后加上第四步代码,所有问题解决
注:这篇文章题目来源于廖雪峰软件工程师的Javascript教程里的插入DOM一节:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
放弃深度学习?我承认是因为线性代数
深度学习从入门到放弃?一定是哪里出了问题。 这篇文章想来和你探讨下:深度学习背后的线性代数问题。 先做个简单的名词解释 深度学习:作为机器学习的一个子域,关注用于模仿大脑功能和结构的算法:人工神经网络。 线性代数:连续的而不是离散的数学形式,许多计算机科学家不太了解它。对于理解和使用许多机器学习算法,特别是深度学习算法,理解线性代数是非常重要的。 为什么需要数学? 线性代数,概率和微积分是机器学习用于表述的「语言」。学习这些主题将有助于深入理解底层算法机制,便于开发新算法。 当限定在更小的层次时,深度学习背后的基础都是数学。所以在开始深度学习和编程之前,理解基本的线性代数是至关重要的。 src 深度学习背后的核心数据结构是标量,向量,矩阵和张量。让我们以编程方式用这些解决所有基本的线性代数问题。 标量 标量是单个数字,是一个 0 阶张量的例子。符号 x
- 下一篇
5月23日云栖精选夜读丨阿里云总裁胡晓明:“拿来主义”盖不起高楼大厦
5月23日,在云栖大会·武汉峰会上,作为中国云计算产业的领航者,阿里云总裁胡晓明系统阐述了这家公司坚守的三条生命线:坚持自主研发之路,“‘拿来主义’盖不出高楼大厦,自主研发的云才能走得更远”;生态是阿里巴巴血液里流淌的基因,阿里云与合作伙伴共生共存;重申阿里云一直以来的承诺——坚决不碰客户数据。 热点热议 阿里云总裁胡晓明:“拿来主义”盖不起高楼大厦 作者:技术小能手 蚂蚁金服黑科技:SOFA DTX分布式事务,保障亿级资金操作一致性 作者:阿川925 阿里CEO把新零售带到日本 300商业大佬激动到忘记鼓掌 作者:技术小能手 知识整理 Docker极简入门 作者:滇池孤鸿 [84题]Linux运维常见笔试题(填空题) 作者:代金券优惠 函数计算处理异构数据的内容 作者:文意 Android Flutter 内存机制初探 作者:技术小能手 Spring编程式和声明式事务实例讲解 作者:snailclimb 美文回顾 AI弄潮!深圳第一高楼智能访客系统“刷脸”通行 作者:技术小能手 放弃深度学习?我承认是因为线性代数 作者:技术小能手 Windows 容器基础知识扫盲问答,权威 Dock...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装