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 权威指南(第四版) 读书笔记
Aug 11 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
Dec 24 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
学习Bootstrap滚动监听 附调用方法
Jul 02 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
简单实现js拖拽效果
Jul 25 Javascript
javascript+css3开发打气球小游戏完整代码
Nov 28 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
Jul 10 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 Javascript
微信小程序实现蒙版弹出窗功能
Sep 17 Javascript
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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
用于table内容排序
2006/07/21 Javascript
在线游戏大家来找茬II
2006/09/30 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
javascript this详细介绍
2016/09/19 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
Python语言快速上手学习方法
2018/12/14 Python
python如何统计代码运行的时长
2019/07/24 Python
手写一个python迭代器过程详解
2019/08/27 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
web页面录屏实现
2019/02/12 HTML / CSS
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
财务主管自我鉴定
2014/01/17 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
SQL之各种join小结详细讲解
2021/08/04 MySQL