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 相关文章推荐
js 实现 input type=&quot;file&quot; 文件上传示例代码
Aug 07 Javascript
深入理解Javascript动态方法调用与参数修改的问题
Dec 10 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
Mar 05 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
node.js实现复制文本到剪切板的功能
Jan 23 Javascript
基于JavaScript中字符串的match与replace方法(详解)
Dec 04 Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 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
星际原理概述
2020/03/04 星际争霸
php你的验证码安全码?
2007/01/02 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php返回json数据函数实例
2014/10/09 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
js 金额文本框实现代码
2012/02/14 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
jQuery基础知识小结
2014/12/22 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
上课说话检讨书大全
2014/01/22 职场文书
党员承诺书格式
2014/05/21 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技
Python实现对齐打印 format函数的用法
2022/04/28 Python