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 相关文章推荐
javascript+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
JS判断客服QQ号在线还是离线状态的方法
Jan 13 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
Aug 12 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
Dec 02 Javascript
Javascript日期格式化format函数的使用方法
Aug 30 Javascript
Angular学习笔记之angular的$filter服务浅析
Nov 12 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
May 21 jQuery
JS 正则表达式验证密码、邮箱格式的实例代码
Oct 28 Javascript
js array数组对象操作方法汇总
Mar 18 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
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 #Javascript
You might like
如何开始收听短波广播
2021/03/01 无线电
聊天室php&mysql(三)
2006/10/09 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
php实现的简单检验登陆类
2015/06/18 PHP
字符串的replace方法应用浅析
2011/12/06 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
php 修改密码实现代码
2017/05/24 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python实现Adapter模式实例代码
2018/02/09 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Django重设Admin密码过程解析
2020/02/10 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
社会保险接收函
2014/01/12 职场文书
聚美优品励志广告词
2014/03/14 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
入党积极分子个人总结
2015/03/02 职场文书
运动会200米广播稿
2015/08/19 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis