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 相关文章推荐
最近项目写了一些js,水平有待提高
Jan 31 Javascript
IE6浏览器下resize事件被执行了多次解决方法
Dec 11 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
JavaScript更改class和id的方法
2008/10/10 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
欧克利英国官网:Oakley英国
2019/08/24 全球购物
市政施工员自我鉴定
2014/01/15 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
教师节主持词开场白
2015/05/29 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
python使用BeautifulSoup 解析HTML
2022/04/24 Python