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 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
早该知道的7个JavaScript技巧
Mar 27 Javascript
window.location不跳转的问题解决方法
Apr 17 Javascript
leaflet的开发入门教程
Nov 17 Javascript
JS查找英文文章中出现频率最高的单词
Mar 20 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
May 26 Javascript
vue实现搜索功能
May 28 Javascript
angularjs自定义过滤器demo示例
Aug 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
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
python实现复制整个目录的方法
2015/05/12 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python线程指南分享
2019/11/19 Python
python随机生成库faker库api实例详解
2019/11/28 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
JAVA高级程序员面试题
2013/09/06 面试题
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
党员干部一句话承诺
2014/05/30 职场文书
教师节活动总结
2014/08/29 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android