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 相关文章推荐
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
javaScript 计算两个日期的天数相差(示例代码)
Dec 27 Javascript
node.js超时timeout详解
Nov 26 Javascript
javascript去除空格方法小结
May 21 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
详解vue挂载到dom上会发生什么
Jan 20 Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 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
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
php strftime函数的详细用法
2018/06/21 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
Python+django实现文件上传
2016/01/17 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
中软国际Java程序员笔试题
2014/07/19 面试题
库房管理员岗位职责
2014/03/09 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
python 进阶学习之python装饰器小结
2021/09/04 Python
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
python manim实现排序算法动画示例
2022/08/14 Python