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高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
javascript实现根据身份证号读取相关信息
Dec 17 Javascript
举例简介AngularJS的内部语言环境
Jun 17 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
Jul 26 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
原生JS实现的雪花飘落动画效果
May 03 Javascript
浅析Vue 生命周期
Jun 21 Javascript
在vue中使用setInterval的方法示例
Apr 16 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&amp;java(一)
2006/10/09 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
Opacity.js
2007/01/22 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
python从子线程中获得返回值的方法
2019/01/30 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python