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中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
js事件冒泡实例分享(已测试)
Apr 23 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
jQuery淡入淡出元素让其效果更为生动
Sep 01 Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 Javascript
javascript正则表达式中的replace方法详解
Apr 20 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
详解基于mpvue的小程序markdown适配解决方案
May 08 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
JS中的防抖与节流及作用详解
Apr 01 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
javascript json2 使用方法
2010/03/16 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
外贸主管求职简历的自我评价
2013/10/23 职场文书
中专生毕业自我鉴定
2013/11/01 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
详解Redis基本命令与使用场景
2021/06/01 Redis
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android