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 相关文章推荐
百度留言本js 大家可以参考下
Oct 13 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 Javascript
Jquery带搜索框的下拉菜单
May 06 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
基于jQuery实现定位导航位置效果
Nov 15 jQuery
一个基于react的图片裁剪组件示例
Apr 18 Javascript
详解express + mock让前后台并行开发
Jun 06 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
TCP/IP的分层模型
2013/10/27 面试题
介绍一下木马病毒的种类
2015/07/26 面试题
什么是会话Bean
2015/05/14 面试题
最新教师自我评价分享
2013/11/12 职场文书
应付会计岗位职责
2013/12/12 职场文书
公务员转正考察材料
2014/02/07 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
化学教育专业自荐信
2014/07/04 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
Python实现信息管理系统
2022/06/05 Python
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技