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 事件源码定位问题
Jun 18 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
Sep 20 Javascript
浅谈对于react-thunk中间件的简单理解
May 01 Javascript
如何解决js函数防抖、节流出现的问题
Jun 17 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 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
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
javascript简易画板开发
2020/04/12 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
python多线程使用方法实例详解
2019/12/30 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
Python如何实现线程间通信
2020/07/30 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
大学生上课迟到检讨书
2014/10/15 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
团委工作总结2015
2015/04/02 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL