js AppendChild与insertBefore用法详细对比


Posted in Javascript onDecember 16, 2013

我们知道appendChild和insertBefore都有插入节点的功能。但在应用上,这两者之间还是有一些区别的。

比如我们要在下面这个div中插入一个子节点P时:

<div id="test"><p id="x1">Node</p><p>Node</p></div>

我们可以这样写(测试某种情况时请将另外一种注释):

<script type="text/javascript"> 
var oTest = document.getElementById("test"); 
var newNode = document.createElement("p"); 
newNode.innerHTML = "This is a test"; 
//测试从这里开始 
//appendChild方法: 
oTest.appendChild(newNode); 
//insertBefore方法: 
oTest.insertBefore(newNode,null); 
</script>

通过以上的代码,可以测试到一个新的节点被创建到了节点div下,且该节点是div最后一个节点。(如要查看DOM,IE可以通过IE Developer Toolbar插件来查看,Firefox可以使用Firebug)

很明显,通过这个例子,可以知道appendChildhild和insertBefore都可以进行插入节点的操作。

在上面的例子中有这样一句代码:oTest.insertBefore(newNode,null) ,这里insertBefore有2个参数可以设置,第一个是和appendChild相同的,第二却是它特有的。它不仅可以为null,还可以为:

<script type="text/javascript"> 
var oTest = document.getElementById("test"); 
var refChild = document.getElementById("x1"); 
var newNode = document.createElement("p"); 
newNode.innerHTML = "This is a test"; 
oTest.insertBefore(newNode,refChild); 
</script>

这个例子将在x1节点前面插入一个新的节点

又或:

<script type="text/javascript"> 
var oTest = document.getElementById("test"); 
var refChild = document.getElementById("x1"); 
var newNode = document.createElement("p"); 
newNode.innerHTML = "This is a test"; 
oTest.insertBefore(newNode,refChild.nextSibling); 
</script>

这个例子将在x1节点的下一个节点前面插入一个新的节点

还可为:

<script type="text/javascript"> 
var oTest = document.getElementById("test"); 
var newNode = document.createElement("p"); 
newNode.innerHTML = "This is a test"; 
oTest.insertBefore(newNode,oTest.childNodes[0]);  
</script>

这个例子将在第一子节点前面插入一个新的节点,也可以通过改变childNodes[0,1,...]来在其它位置插入新的节点

由于可见insertBefore()方法的特性是在已有的子节点前面插入新的节点,但例一中使用insertBefore()方法也可以在子节点列表末插入新节点的。两种情况结合起来,发现insertBefore()方法插入节点,是可以在子节点列表的任意位置。

从这几个例子中得出:
appendChild() 方法在节点的子节点列表末添加新的子节点。
insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

Javascript 相关文章推荐
用JavaScript脚本实现Web页面信息交互
Dec 21 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
jquery的键盘事件修改代码
Feb 24 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
js获取上传文件的绝对路径实现方法
Aug 02 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
Dec 12 Javascript
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
关于RxJS Subject的学习笔记
Dec 05 Javascript
JavaScript 继承 封装 多态实现及原理详解
Jul 29 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
js中AppendChild与insertBefore的用法详细解析
Dec 16 #Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 #Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 #Javascript
JS冒泡事件的快速解决方法
Dec 16 #Javascript
JS批量操作CSS属性详细解析
Dec 16 #Javascript
js鼠标及对象坐标控制属性详细解析
Dec 14 #Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
Dec 14 #Javascript
You might like
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
基于Python闭包及其作用域详解
2017/08/28 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
django中间键重定向实例方法
2019/11/10 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
python如何写try语句
2020/07/14 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
学生自我鉴定
2013/12/18 职场文书
工程售后服务承诺书
2014/05/21 职场文书
实习介绍信范文
2015/05/05 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
ipad隐藏软件app图标方法
2022/04/19 数码科技