学习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 相关文章推荐
Firefox getBoxObjectFor getBoundingClientRect联系
Oct 26 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
Mar 10 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
May 18 Javascript
Bootstrap前端开发案例一
Jun 17 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
vue中是怎样监听数组变化的
Oct 24 Javascript
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
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
php获取网页内容方法总结
2008/12/04 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
js实现全选和全不选
2020/07/28 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Python语言异常处理测试过程解析
2020/01/08 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
家长给幼儿园的表扬信
2014/01/09 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
python tkinter实现定时关机
2021/04/21 Python
Redis主从复制操作和配置详情
2022/09/23 Redis