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 相关文章推荐
Document 对象的常用方法
Jul 31 Javascript
遍历jquery对象的代码分享
Nov 02 Javascript
jquery动态添加option示例
Dec 30 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
jQuery插件扩展实例【添加回调函数】
Nov 26 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
Mar 21 Javascript
详解vue slot插槽的使用方法
Jun 13 Javascript
ES6中的rest参数与扩展运算符详解
Jul 18 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
JS随机数产生代码分享
Feb 24 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
JS实现星星海特效
Dec 24 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
谈一谈收音机的高放电路
2021/03/02 无线电
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
use jscript List Installed Software
2007/06/11 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python二元表达式用法
2019/12/04 Python
python else语句在循环中的运用详解
2020/07/06 Python
python绘制趋势图的示例
2020/09/17 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
亚马逊印度站:Amazon.in
2017/10/15 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
工资证明格式模板
2015/06/12 职场文书
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers