javascript学习笔记(十九) 节点的操作实现代码


Posted in Javascript onJune 20, 2012

本节要用到的html例子

<ul id="myList"> 
<li>项目一</li> 
<li>项目二</li> 
<li>项目三</li> 
</ul>

1.创建元素节点
document.createElement() 方法 用于创建元素,接受一个参数,即要创建元素的标签名,返回创建的元素节点
var div = document.createElement("div"); //创建一个div元素 
div.id = "myDiv"; //设置div的id 
div.className = "box"; //设置div的class

创建元素后还要把元素添加到文档树中

2.添加元素节点
appendChild() 方法 用于向childNodes列表的末尾添加一个节点,返回要添加的元素节点

var ul = document.getElementById("myList"); //获得ul 
var li = document.createElement("li"); //创建li 
li.innerHTML = "项目四"; //向li内添加文本 
ul.appendChild(li); //把li 添加到ul子节点的末尾

添加后:
<ul id="myList"> 
<li>项目一</li> 
<li>项目二</li> 
<li>项目三</li> 
<li>项目四</li> 
</ul>

appendChild() 方法还可以添加已经存在的元素,会将元素从原来的位置移到新的位置
var ul = document.getElementById("myList"); //获得ul 
ul.appendChild(ul.firstChild); //把ul的第一个元素节点移到ul子节点的末尾

运行后(IE):
<ul id="myList"> 
<li>项目二</li> 
<li>项目三</li> 
<li>项目一</li> 
</ul>

insertBefore() 方法 ,如果不是在末尾插入节点,而是想放在特定的位置上,用这个方法,该方法接受2个参数,第一个是要插入的节点,第二个是参照节点,返回要添加的元素节点
var ul = document.getElementById("myList"); //获得ul 
var li = document.createElement("li"); //创建li 
li.innerHTML= "项目四"; //向li内添加文本 
ul.insertBefore(li,ul.firstChild); //把li添加到ul的第一个子节点前

添加后:
<ul id="myList"> 
<li>项目四</li> 
<li>项目一</li> 
<li>项目二</li> 
<li>项目三</li> 
</ul>

var ul = document.getElementById("myList"); //获得ul 
var li = document.createElement("li"); //创建li 
li.innerHTML= "项目四"; //向li内添加文本 
ul.insertBefore(li,ul.null); //把li添加到ul的子节点末尾

添加后:
<ul id="myList"> 
<li>项目一</li> 
<li>项目二</li> 
<li>项目三</li> 
<li>项目四</li> 
</ul>

var ul = document.getElementById("myList"); //获得ul 
var li = document.createElement("li"); //创建li 
li.innerHTML= "项目四"; //向li内添加文本 
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合 
ul.insertBefore(li,lis[1]); 
//把li添加到ul中的第二个li节点前

添加后:
<ul id="myList"> 
<li>项目一</li> 
<li>项目四</li> 
<li>项目二</li> 
<li>项目三</li> 
</ul>

3.移除元素节点
removeChild() 方法 ,用于移除节点,接受一个参数,即要移除的节点,返回被移除的节点,注意被移除的节点仍然在文档中,不过文档中已没有其位置了
var ul = document.getElementById("myList"); //获得ul 
var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一个子节点1 var ul = document.getElementById("myList"); //获得ul 
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合 
ul.removeChild(lis[0]); 

//移除第一个li,与上面不同,要考虑浏览器之间的差异

4.替换元素节点
replaceChild() 方法 ,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要替换的节点,返回被替换的节点
var ul = document.getElementById("myList"); //获得ul 
var fromFirstChild = ul.replaceChild(ul.firstChild); //替换ul第一个子节点1 var ul = document.getElementById("myList"); //获得ul; 
var li = document.createElement("li"); //创建li 
li.innerHTML= "项目四"; //向li内添加文本 
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合 
var returnNode = ul.replaceChild(li,lis[1]); //用创建的li替换原来的第二个li

5.复制节点
cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)
var ul = document.getElementById("myList"); //获得ul 
var deepList = ul.cloneNode(true); //深复制 
var shallowList = ul.cloneNode(false); //浅复制

节点的操作要注意IE和其它浏览器的差异(第十八节中有讲到)
Javascript 相关文章推荐
js 复制或插入Html的实现方法小结
May 19 Javascript
关于IE BUG与字符串截取substr的解决办法
Apr 10 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
Sep 25 Javascript
JavaScript函数详解
Nov 17 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
May 09 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
May 26 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
Jul 25 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
Jan 08 Javascript
vue - props 声明数组和对象操作
Jul 30 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
Jun 20 #Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 #Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
Jun 20 #Javascript
javascript学习笔记(十五) js间歇调用和超时调用
Jun 20 #Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 #Javascript
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 #Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 #Javascript
You might like
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
CentOS安装php v8js教程
2015/02/26 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
高中语文教学反思
2014/01/16 职场文书
《春笋》教学反思
2014/04/15 职场文书
《悯农》教学反思
2014/04/28 职场文书
小班评语大全
2014/05/04 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
如何写好活动总结
2019/06/21 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers