js中AppendChild与insertBefore的用法详细解析


Posted in Javascript onDecember 16, 2013

appendChild定义
appendChild(newChild: Node) : Node
Appends a node to the childNodes array for the node.
Supported: IE 5.0+, Mozilla 1.0+, Netscape 6.0+, Safari 1.0+, Opera 7.0+
添加一个节点到指定的节点的子节点数组中,读起来好象有点拗口,简单地说就是将元素添加到指定的节点中

appendChild用法
target.appendChild(newChild)

newChild作为target的子节点插入最后的一子节点之后

appendChild例子
var newElement = document.Document.createElement('label');
newElement.Element.setAttribute('value', 'Username:');

var usernameText = document.Document.getElementById('username');
usernameText.appendChild(newElement);

insertBefore定义
The insertBefore() method inserts a new child node before an existing child node.

insertBefore() 方法的作用是:在现有的子节点前插入一个新的子节点

insertBefore用法
target.insertBefore(newChild,existingChild)

newChild作为target的子节点插入到existingChild节点之前

existingChild为可选项参数,当为null时其效果与appendChild一样

insertBefore例子
var oTest = document.getElementById("test");
var newNode = document.createElement("p");
newNode.innerHTML = "This is a test";

oTest.insertBefore(newNode,oTest.childNodes[0]); 

 
好了那么有insertBefore的应该也有insertAfter吧?
好那我们来用Aptana编写一个例子吧,但Aptana的智能提示告诉我其实没有insertAfter这个方法
那么就自己定义一个罗:)

insertAfter定义
function insertAfter(newEl, targetEl)
{
      var parentEl = targetEl.parentNode;

      if(parentEl.lastChild == targetEl)
      {
           parentEl.appendChild(newEl);
      }else
      {
           parentEl.insertBefore(newEl,targetEl.nextSibling);
      }           
}

 
insertAfter用法与例子
var txtName = document.getElementById("txtName");
var htmlSpan = document.createElement("span");
htmlSpan.innerHTML = "This is a test";
insertAfter(htmlSpan,txtName);

将htmlSpan 作为txtName 的兄弟节点插入到txtName 节点之后

总结:
1、appendChild和insertBefore是做对节点的方法来使用的,而insertAfter只是自定义的一个函数

2、insertBefore相对于appendChild来说,比较灵活可以将新的节点插入到目标节点子节点数组中的任一位置。

3、使用appendChild和insertBefore来插入新的节点前提是,其兄弟节点必须有共同的父节点

Javascript 相关文章推荐
教您去掉ie网页加载进度条的方法
Dec 09 Javascript
仿百度输入框智能提示的js代码
Aug 22 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
js 获取、清空input type="file"的值示例代码
Feb 19 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 Javascript
vue.js指令v-model实现方法
Dec 05 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
JavaScript实现简单的计算器
Jan 16 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
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
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 #Javascript
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP 中常量的知识整理
2017/04/14 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
tagName的使用,留一笔
2006/06/26 Javascript
javascript中对对层的控制
2006/12/29 Javascript
Javascript注入技巧
2007/06/22 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
简单上手Python中装饰器的使用
2015/07/12 Python
利用Python破解验证码实例详解
2016/12/08 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
python 批量将中文名转换为拼音
2021/02/07 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
Java如何获得ResultSet的总行数
2016/09/03 面试题
开学典礼演讲稿
2014/05/23 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
django上传文件的三种方式
2021/04/29 Python