DOM编程进阶(JS)

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
简介: 本篇是DOM编程基础(JS)的进阶版

一、DOM节点基本介绍

网页所有内容都是节点(标签、属性、文本、注释等)。在DOM中,节点使用Node来表示。
所有的节点都可以通过JavaScript进行访问,所有HTML元素(节点)均可被修改,也可以创建删除。
节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)三个基本属性

二、节点层级

1、父级节点

利用DOM树可把节点划分不同的关系

node.parentNode:可返回最近的一个父节点,如果没有返回null

2、子节点

parentNode.childNodes(标准):返回指定节点的子节点的集合;返回值包括所有的子节点、元素节点、文本节点。
parentNodes.children(非标准):一个只读属性,只返回所有子元素节点,其他节点不返回;获取所有元素节点,需要其他特殊处理,一般不推荐使用childNode,但浏览器都支持。

var ul=document.querySelector('ul');
for(var i = 0; i < ul.childNodes.lenth; i++) {
   
        if(ul.childNodes[i].nodeType == 1) {
   
        //ul.childNodes[i] 是元素节点
        console.log(ul.childNodes[i]);
        }
    }

parentNode.firstChild:返回一个子节点,找不到返回null,包含所有的节点。
parentNode.lastChild:返回最后一个子节点,找不到返回null,也包含所有节点
以下两个有兼容问题,只支持IE9以上
parentNode.firstElementChild:返回第一个子节点,找不到返回null。
parentNode.lastElementChild:返回最后一个元素节点,找不到返回null。

3、兄弟节点

全部节点
node.nextSibling:返回当前元素的下一个兄弟节点,找不到返回null,包括所有节点。
node.previousSibling:返回当前元素的上一个兄弟节点,找不到返回null,包括所有节点。
指定节点(只支持IE9以上)
node.nextElementSibling:返回当前元素下一个兄弟元素节点,找不到返回null。
node.nextpreviousElementSibling:返回当前元素上一个兄弟节点,找不到返回null。

三、节点操作

1、创建节点

document.createElement():方法创建由tagName指定的html元素(动态创建元素点)。

2、添加节点

node.appendChild():方法将一个节点添加到父节点的子节点列表末尾。
node.insertBefore(child,指定元素):例子:

// 添加节点 node.appendChild(child)  node 父级  child子级
var ul = document.querySelector('ul');
ul.appendChild(li);
//node.insertBefore(child,指定元素);
var lili = document.createElement('li');
ul.insertBefore(lili,ul.children[0]);

3、删除节点

node.removeChild(child):方法从DOM中删除一个子节点,返回删除的节点

4、复制节点(克隆)

node.clonenode:方法返回调用改方法的节点的一个副本。(复制节点)

  • 参数为空或null,则只复制节点本身,不复制子节点。例:node.cloneNode()
  • 参数为true。则复制节点本身节点本身和里面所有子节点。例:node.cloneNode(true)

3、三种创建元素的区别

document.write是直接将内容卸载页面的内容流,如果文档流执行完毕,则会导致页面全部重绘。

innerHTML是将内容写入DOM节点,不会导致页面全部重绘,创建元素效率更高,结构复杂
createElement()创建多个元素效率第一点,但是结构清晰。

四、JavaScript表格对象

我们在网页中看到的表格,想对表格进行操作,我们可以通过DOM获取表格中的子节点

1、HTML DOM Table 对象

1)table 对象

-table对象代表一个表格,在HTML中出现一个

标签就是一个表格

2)table对象集合

w3c标准
cells:返回包含表格中所有单元格的一个数组 w3c:NO
rows:返回包含表格中所有行的一个数组 w3c:Yes

3)table 对象方法

deleteRow:从表格删除一行。 w3c:Yes
insertRow:在表格中插入一个新行。 w3c:Yes

2、td/th 对象

1)td th 对象

td/th 对象代表一个数据单元

2)td/th 对象属性

以下参考:
| 属性 | 描述 | W3C |
| :----- | :------ | :----- |
| abbr | 设置或返回单元格中内容的缩写版本。 | Yes |
| align | 已废弃。 设置或返回单元格内部数据的水平排列方式。| D|
| axis | 设置或返回相关单元格的一个逗号分隔的列表。| Yes |
| background| 已废弃。 设置或返回表格的背景图片。 | D |
| bgColor | 已废弃。 设置或返回表格的背景颜色 | D |
| cellIndex | 返回单元格在某行的单元格集合中的位置。| Yes |
| ch | 设置或返回单元格的对齐字符。| Yes |
| chOff | 设置或返回单元格的对齐字符的偏移量。 | Yes |
| colSpan | 单元格横跨的列数。 | Yes |
| headers | 置或返回 header-cell 的 id 值。| Yes |
| height | 已废弃。 设置或返回数据单元的高度 | D |
| noWrap | 已废弃。 nowrap 属性规定表格单元格中的内容不换行。 | D |
| rowSpan | 设置或返回单元格可横跨的行数。| Yes |
| vAlign | 设置或返回表格单元格内数据的垂直排列方式。 | Yes |
| width | 已废弃。设置或返回单元格的宽度。| D |

3、tr 对象

1)tr 对象

对象代表一个数据单元

2)tr 对象集合

cells:返回表格行中所有的

元素的集合

3)tr 对象属性

以下参考:
| 属性| 描述| W3C |
| :----- | :---- | :--- |
| align|已废弃。 设置或返回在行中数据的水平排列。| D |
| bgColor|已废弃。 设置或返回表格行的的颜色。| D |
| ch | 设置或返回在行中单元格的对齐字符。| Yes |
| chOff | 设置或返回在行中单元格的对齐字符的偏移量。| Yes |
| height | 已废弃。设置或返回表格行的高度。使用 style.height 取代 | D |
| rowIndex | 返回该行在表中的位置。| Yes |
| sectionRowIndex | R返回在 tBody 、tHead 或 tFoot 中,行的位置。| Yes |
| vAlign | 设置或返回在行中的数据的垂直排列方式。| Yes |

4)tr 对象方法

deleteCell():删除行中的指定的单元格。
insertCell():在一行中的指定位置插入一个空的元素。

上一章:DOM编程基础(JS)
下一章:JS和CSS的交互

相关文章
|
26天前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
2月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
12天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
2月前
|
JavaScript
js 中操作dom
js 中操作dom
114 64
|
12天前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
18天前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
12 2
|
1月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
47 4
|
2月前
|
JavaScript 前端开发 索引
你可能没有听说过 js中的 DOM操作还有这个: HTMLCollection 和 NodeList
该文章详细解释了JavaScript中HTMLCollection和NodeList这两种DOM集合类型的特性、使用方法及其区别,并通过实例代码展示了如何操作这两种集合来选取和遍历DOM元素。
|
2月前
|
JavaScript 前端开发
|
2月前
|
XML 移动开发 JavaScript
js中BOM和DOM总结(基础篇)
文章总结了JavaScript的BOM和DOM知识点,包括window、screen、location、history、navigator对象,以及消息框、计时器和cookie。同时,介绍了DOM的概念、节点获取和修改方法,以及事件处理。
js中BOM和DOM总结(基础篇)