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 相关文章推荐
动态调用CSS文件的JS代码
Jul 29 Javascript
JS打开图片另存为对话框实现代码
Dec 26 Javascript
三种检测iPhone/iPad设备方向的方法
Apr 23 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
一分钟理解js闭包
May 04 Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 Javascript
jQuery插件扩展实例【添加回调函数】
Nov 26 Javascript
JS实现的简单轮播图运动效果示例
Dec 22 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
详解vue3.0 的 Composition API 的一种使用方法
Oct 26 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定时任务获取微信access_token的方法
2016/10/10 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
详解vue2.0模拟后台json数据
2019/05/16 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
python多进程实现文件下载传输功能
2018/07/28 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
自荐信需注意事项
2014/01/25 职场文书
应届护士求职信范文
2014/01/26 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
2015年外联部工作总结
2015/04/03 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP