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 相关文章推荐
利用jquery的获取JS文件中的字符串内容
Feb 14 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
Node.js和MongoDB实现简单日志分析系统
Apr 25 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
Oct 14 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
简单谈谈axios中的get,post方法
Jun 25 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
JS实现按钮添加背景音乐示例代码
Oct 17 Javascript
Vue数据绑定简析小结
May 07 Javascript
vscode+gulp轻松开发小程序的完整步骤
Oct 18 Javascript
浅谈Ant Design Pro 菜单自定义 icon
Nov 17 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
Discuz! Passport 通行证整合
2008/03/27 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python实现一个猜拳游戏
2020/04/05 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
入党积极分子思想汇报范文
2014/01/05 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
车间统计员岗位职责
2015/04/14 职场文书
如何使用python包中的sched事件调度器
2022/04/30 Python
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技