js DOM模型操作


Posted in Javascript onDecember 28, 2009

DOM模型中的节点:元素节点、文本节点、属性节点
例:<a href=”http://www.cnblogs.com/shuz”>私のdotnet小屋</a>
(1)a是元素节点
(2)“私のdotnet小屋”是文本节点
(3)href=”http://www.cnblogs.com/shuz”是属性节点
DOM节点的属性

属性 类型 说明
nodeName String 节点名称,根据节点的类型而定义
nodeValue String 节点的值,根据节点的类型而定义
nodeType Number 节点类型,1为元素节点,2为属性节点,3为文本节点
firstChild Node 指向childNodes列表的第一个节点
lastChild Node 指向childNodes列表的最后一个节点
childNodes NodeList 所有子节点列表,childNodes[i]可以访问第i+1个节点
parentNode Node 指向节点的父节点,如果已是根节点,则返回null
previousSibling Node 指向前一个兄弟节点,如果已是第一个节点,则返回null
nextSibling Node 指向后一个兄弟节点,如果已是最后一个节点,返回null
Attributes NameNodeMap 包含一个元素特性的Attr对象,仅用于元素节点
className String 节点的CSS类
innerHTML String 某个标记之间的所有内容,包括代码本身
DOM节点的方法
(1)访问节点:
【通过标签名】
document.getElementsByTagName(sTagName)方法:返回一个包含某个相同标签名的元素节点列表
【通过标签ID】
document.getElementById(sElementId)方法:返回Id为指定值的元素节点
【访问前一个节点】兼容IE和FireFox
(自定义)
function prevSib(oNode){ 
var oTempFirstNode=oNode.parentNode.firstChild; 
//判断是否是第一个节点,如果是则返回null 
if(oNode==oTempFirstNode) 
return null; 
var oTempNode=oNode.previousSibling; 
//逐一搜索前面的兄弟节点,直到发现元素节点为止 
while(oTempNode.nodeType!=1 && oTempNode.previousSibling!=null) 
oTempNode=oTempNode.previousSibling; 
//三目运算符,如果是元素节点则返回节点本身,否则返回null 
return (oTempNode.nodeType==1)?:oTempNode:null; 
}

【访问后一个节点】兼容IE和FireFox
(自定义)
function nextSib(oNode){ 
var oTempLastNode=oNode.parentNode.lastChild; 
//判断是否是最后一个节点,如果是则返回null 
if(oNode==oTempLastNode) 
return null; 
var oTempNode=oNode.nextSibling; 
//逐一搜索后面的兄弟节点,直到发现元素节点为止 
while(oTempNode.nodeType!=1 && oTempNode.nextSibling!=null) 
oTempNode=oTempNode.nextSibling; 
//三目运算符,如果是元素节点则返回节点本身,否则返回null 
return(oTempNode.nodeType==1)?oTempNode:null; 
}

(2)判断一个节点是否有子节点:
NodeObject.hasChildNodes()方法:当childNodes包含一个或多个节点时,返回true
(3)设置节点属性:
eleNode.getAttribute(attrNode)方法:返回eleNode元素的attrNode属性
eleNode.setAttribute(attrNode,sNewValue)方法:设置eleNode元素的attrNode属性的值为sNewValue
(4)创建节点:
document.createElement(eleNode)方法:创建一个元素节点eleNode
document.createTextNode(textNode)方法:创建一个文本节点textNode
document.createDocumentFragment()方法:创建文档碎片节点
(5)添加节点:
eleNode.appendChild(textNode)方法:将textNode节点添加到childNodes的末尾
(6)删除节点:
oNode.parentNode.removeChild(oNode)方法:从childNodes中删除oNode节点
(7)替换节点:
oNode.parentNode.replaceChild(oNewNode,oOldNode)方法:将childNodes中的oOldNode节点替换成oNewNode节点
(8)在特定节点前插入节点:
oTargetNode.parentNode.insertBefore(oNewNode,oTargetNode)方法:在childNodes中的oTargetNode节点之前插入oNewNode节点
(9)在特定节点后插入节点:
(自定义)oTargetNode.parentNode.insertAfter(oNewNode,oTargetNode)方法:在childNodes中的oTargetNode节点之后插入oNewNode节点
function insertAfter(oNewNode,oTargetNode){ 
var oParentNode=oTargetNode.parentNode; 
if(oParentNode.lastChild==oTargetNode) 
oParentNode.appendChild(oNewNode); 
else 
oParentNode.insertBefore(oNewNode,oTargetNode.nextSibling); 
}
Javascript 相关文章推荐
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
用javascript实现读取txt文档的脚本
Jul 20 Javascript
javaScript 动态访问JSon元素示例代码
Aug 30 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
前端设计师们最常用的JS代码汇总
Sep 25 Javascript
jquery.zclip轻量级复制失效问题
Jan 08 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
Node.js学习之查询字符串解析querystring详解
Sep 28 Javascript
微信小程序中遇到的iOS兼容性问题小结
Nov 14 Javascript
node.js基于socket.io快速实现一个实时通讯应用
Apr 23 Javascript
如何使用JS console.log()技巧提高工作效率
Oct 14 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 #Javascript
javascript iframe编程相关代码
Dec 28 #Javascript
通过javascript设置css属性的代码
Dec 28 #Javascript
JavaScript的public、private和privileged模式
Dec 28 #Javascript
Javascript 面向对象特性
Dec 28 #Javascript
extJs 常用到的增,删,改,查操作代码
Dec 28 #Javascript
firefox和IE系列的相关区别整理 以备后用
Dec 28 #Javascript
You might like
模仿OSO的论坛(一)
2006/10/09 PHP
第十五节--Zend引擎的发展
2006/11/16 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
迎接领导欢迎词
2014/01/11 职场文书
年度考核自我鉴定
2014/02/02 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2014年司机工作总结
2014/11/21 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技