学习JS中的DOM节点以及操作


Posted in Javascript onApril 30, 2018

DOM操作在JS中可以说是非常常见了吧,很多网页的小功能的实现,比如一些元素的增删操作等都可以用JS来实现。那么在DOM中我们需要知道些什么才能完成一些功能的实现呢?今天这篇文章就先简单的带大家入一下JS中DOM操作的门吧!!

一、DOM树的节点

1、 DOM节点分为三大类: 元素节点(标签节点)、属性节点和文本节点。

属性节点和文本节点都属于元素节点的子节点。 因此操作时,需先选中元素节点,再修改属性和文本。

【查看元素节点】

1、 使用getElement系列方法:

具体的HTML代码如下图:

学习JS中的DOM节点以及操作

//通过ID来查看元素属性
var li = document.getElementById("first"); 
//通过类名来查看元素属性
var lis1 = document.getElementsByClassName("cls");
//通过名字来查看元素属性
var lis2 = document.getElementsByName("name");
//通过标签名来查看元素属性
var lis3 = document.getElementsByTagName("li");

注意事项:

① ID不能重名,如果ID重复,只能取到第一个。

② 获取元素节点时,必须等到DOM树加载完成后才能获取。

两种处理方式:

a.将JS写在文档最后;

b.将代码写入window.onload函数中;

③ 通过getElements系列取到的为数组格式,操作时必须取到其中的每一个元素,才能进行操作,而不能直接对数组进行操作。

document.getElementsByTagName("li")[0].click = function(){}

④ 这一系列方法,也可以先选中一个DOM节点,在从选中的DOM节点中,选择需要的节点:

document.getElementById("div1").getElementsByTagName("li");

【通过querySelector系列方法】

① 传入一个选择器名称,返回第一个找到的元素。 通常用于查找ID:

var dq1 = document.querySelector("#id");

② 传入一个选择器名称,返回所有找到的元素,无论找到几个,都返回数组格式。这种方法比较全能,不管什么属性都可以准确地找到。

var dqs1 = document.querySelectorAll("#div1 li");

【查看\设置属性节点】

1、 查看属性节点:.getAttribute("属性名");

2、 设置属性节点:.setAttribute("属性名","属性值");

注意事项:.setAttribute() 在老版本IE中会存在兼容性问题,可以使用.符号代替。

【JS修改CSS的多种方式】

1、 使用setAttribute设置class和style。

document.getElementById("first").setAttribute("class","class1");
document.getElementById("first").setAttribute("style","color:red;");

2、使用.className添加一个class选择器。

document.getElementById("first").className = "class1";

3、 使用.style.样式 直接修改单个样式。 注意样式名必须使用驼峰命名法。

document.getElementById("first").style.fontSize = "18px";

4、 使用.style 或 .style.cssText 添加一串行级样式:

// IE不兼容
document.getElementById("first").style = "color:red;"; 
//所有浏览器兼容
document.getElementById("first").style.cssText = "color:red;";

【查看/设置文本节点】

1、.innerHTML: 取到或设置一个节点中的HTML代码。

2、.innerText: 取到或设置一个节点中的文本,不能设置HTML代码。

二、层次节点操作

1. .childNodes: 获取当前节点的所有子节点(包括元素节点和文本节点)。

.children: 获取当前节点的所有元素子节点(不包含文本节点)。

2. .parentNode: 获取当前节点的父节点。

3. .firstChild: 获取第一个子节点,包括回车等文本节点;

.firstElementChild: 获取第一个元素节点。 不含文本节点;

.lastChild: 获取最后一个子节点,包括回车等文本节点;

.lastElementChild: 获取最后一个子节点,不含文本节点;

4. .previousSibling: 获取当前节点的前一个兄弟节点,包括文本节点;

.previousElementSibling: 获取当前节点的前一个元素兄弟节点;

.nextSibling:获取当前节点的后一个兄弟节点,包括文本节点;

.nextElementSibling:获取当前节点的后一个元素兄弟节点;

5. .attributes: 获取当前节点的所有属性节点。 返回数组格式。

【创建并新增节点】

1. document.createElement("标签名"): 创建一个新节点,并将创建的新节点返回。

需要配合.setAttribute()为新节点设置属性。

2. 父节点.insertBefore(新节点,目标节点): 在父节点中,将新节点插入到目标节点之前。

父节点.appendChild(新节点): 在父节点的内部最后,插入一个新节点。

3. 源节点.cloneNode(true): 克隆一个节点。

传入true表示克隆源节点以及源节点的所有子节点;

传入false或不传,表示只克隆当前节点,而不克隆子节点。

【删除、替换节点】

1. 父节点.removeChild(子节点): 从父节点中,删除指定子节点。

2. 父节点.replaceChild(新节点,老节点): 从父节点中,用新节点替换老节点。

Javascript 相关文章推荐
jquery tab标签页的制作
May 10 Javascript
jquery果冻抖动效果实现方法
Jan 15 Javascript
javascript操作ul中li的方法
May 14 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
购物车前端开发(jQuery和bootstrap3)
Aug 27 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
webpack 2的react开发配置实例代码
Jul 28 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 Javascript
如何从头实现一个node.js的koa框架
Jun 17 Javascript
小程序接口的promise化的实现方法
Dec 11 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
WebSocket的通信过程与实现方法详解
Apr 29 #Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 #jQuery
在vscode里使用.vue代码模板的方法
Apr 28 #Javascript
JS实现的透明度渐变动画效果示例
Apr 28 #Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 #Javascript
vue2.0+ 从插件开发到npm发布的示例代码
Apr 28 #Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 #Javascript
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
生成sessionid和随机密码的例子
2006/10/09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery知识点整理
2015/01/30 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
bootstrap table实例详解
2017/01/06 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
基于iview的router常用控制方式
2019/05/30 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
python机器学习实战之K均值聚类
2017/12/20 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
致标枪运动员广播稿
2014/02/06 职场文书
仓管岗位职责范本
2014/02/08 职场文书
父母寄语大全
2014/04/12 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
爱护公物标语
2014/06/24 职场文书
生产车间管理制度
2015/08/04 职场文书
董事长秘书工作总结
2015/08/14 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL