博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript删除创建多个子节点
阅读量:6161 次
发布时间:2019-06-21

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

问题:对已经有的HTML结构(如下图),按照字符串顺序重新排序DOM结点。

  1. Scheme
  2. JavaScript
  3. Python
  4. Ruby
  5. Haskell

第一步获得所有子节点

var testList=document.getElementById('test-list');var childs=testList.childNodes;

第二步将每个子节点的值一个个保存在数组中,然后一个个将子节点删除

var arr=[];    for(var i=0;i
可是并没有删除掉

bfc0ae4a45759335ed3ff7690be4b3f649f4b5e3

原因是:因为当你把索引为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();

第四步创建新子节点,并依次把arr的值赋值给它

for(var i=0;i
可是并没有创建好(页面没有任何显示),打开控制台有11个undefined

4db492f83bb99a14215205d3385ec44d2ed1f926

我们先看看刚开始给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]);    }
查看控制台结果

5b8f826ddca35f82637dbf5e1963a66cf8a76005

竟然多了一半的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
0466b4973f02344348769f214272a63f55fa55ac

最后加上第四步代码,所有问题解决

注:这篇文章题目来源于廖雪峰软件工程师的Javascript教程里的插入DOM一节:

转载地址:http://lcrfa.baihongyu.com/

你可能感兴趣的文章
MVP Community Camp 社区大课堂
查看>>
GWT用frame调用JSP
查看>>
大型高性能ASP.NET系统架构设计
查看>>
insert select带来的问题
查看>>
EasyUI 添加tab页(iframe方式)
查看>>
mysqldump主要参数探究
查看>>
好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题...
查看>>
使用addChildViewController手动控制UIViewController的切换
查看>>
Android Fragment应用实战
查看>>
SQL Server查询死锁并KILL
查看>>
内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
查看>>
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
Spring如何处理线程并发
查看>>