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 相关文章推荐
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
Apr 27 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
jquery中each方法示例和常用选择器
Jul 08 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
JavaScript中原型和原型链详解
Feb 11 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
Jul 07 Javascript
详解react如何在组件中获取路由参数
Jun 15 Javascript
node.js express中app.param的用法详解
Jul 16 Javascript
详解vue2 $watch要注意的问题
Sep 08 Javascript
layui switch 开关监听 弹出确定状态转换的例子
Sep 21 Javascript
JS中准确判断变量类型的方法
Jun 01 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错误、异常处理机制(补充)
2012/05/07 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
windows下ipython的安装与使用详解
2016/10/20 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
过滤器的用法
2013/10/08 面试题
人事专员的岗位职责
2014/03/01 职场文书
运动会班级口号
2014/06/09 职场文书
企业法人代表证明书
2014/09/27 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
银行给客户的感谢信
2015/01/23 职场文书
爱晚亭导游词
2015/02/09 职场文书
少儿励志名言(80句)
2019/08/14 职场文书