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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
IE关闭时判断及AJAX注销案例学习
Feb 18 Javascript
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
JavaScript 作用域链解析
Nov 13 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
Jan 19 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
layer实现弹窗提交信息
Dec 12 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
基于JavaScript canvas绘制贝塞尔曲线
Dec 25 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
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数据库密码的找回的步骤
2011/01/12 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
JS查看对象功能代码
2008/04/25 Javascript
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
javascript读写json示例
2014/04/11 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
外贸主管求职简历的自我评价
2013/10/23 职场文书
计算机专业推荐信范文
2013/11/27 职场文书
承诺书范文
2014/06/03 职场文书
毕业生求职信
2014/06/10 职场文书
齐云山导游词
2015/02/06 职场文书
水电工程师岗位职责
2015/02/13 职场文书
不同意离婚答辩状
2015/05/22 职场文书
Django框架中表单的用法
2022/06/10 Python