JavaScript DOM节点操作方法总结


Posted in Javascript onAugust 23, 2016

节点类型主要有三种:元素节点,属性节点和文本节点。

JavaScript DOM节点操作方法总结

而对DOM的主要也就是围绕元素节点和属性节点增删改查。下面就分别从对元素节点的操作和对属性节点的操作来介绍。

元素节点

在对DOM进行增删改之前,首先要找到对应的元素。具体的查找方法如下:

getElementByID()       // 得到单个节点
 getElementsByTagName()    // 得到节点数组 NodeList
 getElementsByName()      // 得到节点数组 NodeList

同时还可以利用元素节点的属性获取它的父子节点和文本节点:

子节点

 

Node.childNodes  //获取子节点列表NodeList; 注意换行在浏览器中被算作了text节点,如果用这种方式获取节点列表,需要进行过滤
Node.firstChild  //返回第一个子节点
Node.lastChild  //返回最后一个子节点

 父节点

Node.parentNode   // 返回父节点
Node.ownerDocument  //返回祖先节点(整个document)

同胞节点

Node.previousSibling    // 返回前一个节点,如果没有则返回null
Node.nextSibling       // 返回后一个节点

新增节点首先要创建节点,然后将新建的节点插入DOM中,所以下面分别介绍创建节点和插入节点的方法,复制节点的方法也在创建节点中进行介绍。

创建节点

createElement()    // 按照指定的标签名创建一个新的元素节点

创建代码片段(为避免频繁刷新DOM,可以先创造代码片段,完成所有节点操作之后统一添加到DOM中)

createDocumentFragment()

复制节点

clonedNode = Node.cloneNode(boolean) // 只有一个参数,传入一个布尔值,true表示复制该节点下的所有子节点;false表示只复制该节点

插入节点

/*插入node*/
parentNode.appendChild(childNode);  // 将新节点追加到子节点列表的末尾
parentNode.insertBefore(newNode, targetNode);  //将newNode插入targetNode之前

/*插入html代码*/
node.insertAdjacentHTML('beforeBegin', html);  //在该元素之前插入代码
node.insertAdjacentHTML('afterBegin', html);  //在该元素的第一个子元素之前插入代码
node.insertAdjacentHTML('beforeEnd', html);  //在该元素的最后一个子元素之后插入代码
node.insertAdjacentHTML('afterEnd', html);  //在该元素之后插入代码

替换节点

parentNode.replace(newNode, targetNode);    //使用newNode替换targetNode

移除节点

parentNode.removeChild(childNode);  // 移除目标节点
node.parentNode.removeChild(node);    //在不清楚父节点的情况下使用

属性节点

操作属性节点,就是对DOM样式进行增删改查。对于行内样式、内联样式、外部样式有不同的操作方法;各种方法获得的样式也有可读可写和只读之分。

直接获取CSS样式

node.style.color     // 可读可写

Style本身的属性和方法

node.style.cssText     //获取node行内样式字符串
node.style.length      //获取行内样式个数
node.style.item(0)     //获取指定位置的样式

获取和修改元素样式

HTML5为元素提供了一个新的属性:classList 来实现对元素样式表的增删改查。操作如下:

node.classList.add(value);     //为元素添加指定的类
node.classList.contains(value);  // 判断元素是否含有指定的类,如果存在返回true
node.classList.remove(value);  // 删除指定的类
node.classList.toggle(value);  // 有就删除,没有就添加指定类

修改DOM特性的方法

Node.getAttribute('id')    // 获取
Node.setAttribute('id')    // 设置
Node.removeAttribute()     // 移除
Node.attributes        // 获取DOM全部特性

只读方法

getComputedStyle是window的方法。它能够获取当前元素所有最终使用的CSS属性值,但是是只读的。它有两个参数,第一个为传入的节点,第二个可以传入:hover, :blur等获取其伪类样式,如果没有则传入null。

然而IE并不支持getComputedStyle方法,可以使用currentStyle来保持兼容性:

window.getComputedStyle ? window.getComputedStyle(node, null) : node.currentStyle

以上这篇JavaScript DOM节点操作方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery CSS样式控制 学习笔记
Jul 23 Javascript
动态加载jQuery的两种方法实例分析
Jul 17 Javascript
Bootstrap基本模板的使用和理解1
Dec 14 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
微信小程序下拉框组件使用方法详解
Dec 28 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 Javascript
vue缓存的keepalive页面刷新数据的方法
Apr 23 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
EasyUI创建对话框的两种方式
Aug 23 #Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 #Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
Aug 23 #Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 #Javascript
jQuery事件处理的特征(事件命名机制)
Aug 23 #Javascript
深入浅出 jQuery中的事件机制
Aug 23 #Javascript
javascript实现简单的on事件绑定
Aug 23 #Javascript
You might like
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
php define的第二个参数使用方法
2013/11/04 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
PHP实现计算器小功能
2020/08/28 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
pip install urllib2不能安装的解决方法
2018/06/12 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
基于树莓派的语音对话机器人
2019/06/17 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
毕业留言寄语大全
2014/04/10 职场文书
2014年环保局工作总结
2014/12/11 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
企业宣传语大全
2015/07/13 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书