appendChild() 或 insertBefore()使用与区别介绍


Posted in Javascript onOctober 11, 2013

document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。其中,appendChild() 方法在节点的子节点列表末添加新的子节点。insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

下面,举例说明document.createElement()的用法。<div id="board"></div>
例1:

<script type="text/javascript"> 
var board = document.getElementById("board"); 
var e = document.createElement("input"); 
e.type = "button"; 
e.value = "这是测试加载的小例子"; 
var object = board.appendChild(e); 
</script>

效果:在标签board中加载一个按钮,属性值为“这是测试加载的小例子”。

例2:

<script type="text/javascript"> 
var board = document.getElementById("board"); 
var e2 = document.createElement("select"); 
e2.options[0] = new Option("加载项1", ""); 
e2.options[1] = new Option("加载项2", ""); 
e2.size = "2"; 
var object = board.appendChild(e2); 
</script>

效果:在标签board中加载一个下拉列表框,属性值为“加载项1”和“加载项2”。

例3:

<script type="text/javascript"> 
var board = document.getElementById("board"); 
var e3 = document.createElement("input"); 
e4.setAttribute("type", "text"); 
e4.setAttribute("name", "q"); 
e4.setAttribute("value", "使用setAttribute"); 
e4.setAttribute("onclick", "javascript:alert('This is a test!');"); 
var object = board.appendChild(e3); 
</script>

效果:在标签board中加载一个文本框,属性值为“使用setAttribute”。 当点击这个文本框时,会弹出对话框“This is a test!”。

根据上面例子,可以看出,可以通过加载对象的属性来设置,参数是相同的。使用e.type="text" 和 e.setAttribute("type","text")效果是一致的。

下面,我们用实例来讲述一下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最后一个节点。很明显,通过这个例子,可以知道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 构造函数 实例分析
Nov 26 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
javascript中DOM复选框选择用法实例
May 14 Javascript
JavaScript实现显示函数调用堆栈的方法
Apr 21 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
Feb 24 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
angular动态表单制作
Feb 23 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 Javascript
javascript实现贪吃蛇游戏(娱乐版)
Aug 17 Javascript
如何在vue 中引入使用jquery
Nov 10 jQuery
JQuery对class属性的操作实现按钮开关效果
Oct 11 #Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 #Javascript
javascript自然分类法算法实现代码
Oct 11 #Javascript
jQuery阻止事件冒泡具体实现
Oct 11 #Javascript
JS定时器实例详细分析
Oct 11 #Javascript
jquery 清空file域示例(兼容个浏览器)
Oct 11 #Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 #Javascript
You might like
PHP 彩色文字实现代码
2009/06/29 PHP
PHP分页函数代码(简单实用型)
2010/12/02 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
经验几则 推荐
2006/09/05 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python实现包含min函数的栈
2016/04/29 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
使用django实现一个代码发布系统
2019/07/18 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
编写python代码实现简单抽奖器
2020/10/20 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
会计顶岗实习心得
2014/01/25 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书