整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML DOM 元素对象

TML DOM 节点

在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :

  • 文档本身就是一个文档对象

  • 所有 HTML 元素都是元素节点

  • 所有 HTML 属性都是属性节点

  • 插入到 HTML 元素文本是文本节点

  • 注释是注释节点


元素对象

在 HTML DOM 中, 元素对象代表着一个 HTML 元素。

元素对象 的 子节点可以是, 可以是元素节点,文本节点,注释节点。

NodeList 对象 代表了节点列表,类似于 HTML元素的子节点集合。

元素可以有属性。属性属于属性节点。


浏览器支持

所有主流浏览器都支持 元素对象 和 NodeList 对象。.


属性和方法

以上属性和方法可适用于所有 HTML 元素:

属性 / 方法描述
element.accessKey设置或返回accesskey一个元素
element.addEventListener()向指定元素添加事件句柄
element.appendChild()为元素添加一个新的子元素
element.attributes返回一个元素的属性数组
element.childNodes返回元素的一个子节点的数组
element.classlist返回元素的类名,作为 DOMTokenList 对象。
element.className设置或返回元素的class属性
element.clientHeight在页面上返回内容的可视高度(不包括边框,边距或滚动条)
element.clientWidth在页面上返回内容的可视宽度(不包括边框,边距或滚动条)
element.cloneNode()克隆某个元素
element.compareDocumentPosition()比较两个元素的文档位置。
element.contentEditable设置或返回元素的内容是否可编辑
element.dir设置或返回一个元素中的文本方向
element.firstChild返回元素的第一个子节点
element.focus()设置文档或元素获取焦点
element.getAttribute()返回指定元素的属性值
element.getAttributeNode()返回指定属性节点
element.getElementsByTagName()返回指定标签名的所有子元素集合。
element. getElementsByClassName()返回文档中所有指定类名的元素集合,作为 NodeList 对象。
element.getFeature()返回指定特征的执行APIs对象。
element.getUserData()返回一个元素中关联键值的对象。
element.hasAttribute()如果元素中存在指定的属性返回 true,否则返回false。
element.hasAttributes()如果元素有任何属性返回true,否则返回false。
element.hasChildNodes()返回一个元素是否具有任何子元素
element.hasFocus()返回布尔值,检测文档或元素是否获取焦点
element.id设置或者返回元素的 id。
element.innerHTML设置或者返回元素的内容。
element.insertBefore()现有的子元素之前插入一个新的子元素
element.isContentEditable如果元素内容可编辑返回 true,否则返回false
element.isDefaultNamespace()如果指定了namespaceURI 返回 true,否则返回 false。
element.isEqualNode()检查两个元素是否相等
element.isSameNode()检查两个元素所有有相同节点。
element.isSupported()如果在元素中支持指定特征返回 true。
element.lang设置或者返回一个元素的语言。
element.lastChild返回的最后一个子元素
element.namespaceURI返回命名空间的 URI。
element.nextSibling返回该元素紧跟的一个节点
element.nodeName返回元素的标记名(大写)
element.nodeType返回元素的节点类型
element.nodeValue返回元素的节点值
element.normalize()使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点
element.offsetHeight返回,任何一个元素的高度包括边框和填充,但不是边距
element.offsetWidth返回元素的宽度,包括边框和填充,但不是边距
element.offsetLeft返回当前元素的相对水平偏移位置的偏移容器
element.offsetParent返回元素的偏移容器
element.offsetTop返回当前元素的相对垂直偏移位置的偏移容器
element.ownerDocument返回元素的根元素(文档对象)
element.parentNode返回元素的父节点
element.previousSibling返回某个元素紧接之前元素
element.querySelector()返回匹配指定 CSS 选择器元素的第一个子元素
document.querySelectorAll()返回匹配指定 CSS 选择器元素的所有子元素节点列表
element.removeAttribute()从元素中删除指定的属性
element.removeAttributeNode()删除指定属性节点并返回移除后的节点。
element.removeChild()删除一个子元素
element.removeEventListener()移除由 addEventListener() 方法添加的事件句柄
element.replaceChild()替换一个子元素
element.scrollHeight返回整个元素的高度(包括带滚动条的隐蔽的地方)
element.scrollLeft返回当前视图中的实际元素的左边缘和左边缘之间的距离
element.scrollTop返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离
element.scrollWidth返回元素的整个宽度(包括带滚动条的隐蔽的地方)
element.setAttribute()设置或者改变指定属性并指定值。
element.setAttributeNode()设置或者改变指定属性节点。
element.setIdAttribute()
element.setIdAttributeNode()
element.setUserData()在元素中为指定键值关联对象。
element.style设置或返回元素的样式属性
element.tabIndex设置或返回元素的标签顺序。
element.tagName作为一个字符串返回某个元素的标记名(大写)
element.textContent设置或返回一个节点和它的文本内容
element.title设置或返回元素的title属性
element.toString()一个元素转换成字符串
nodelist.item()返回某个元素基于文档树的索引
nodelist.length返回节点列表的节点数目。

HTML DOM 节点

在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :

  • 文档本身就是一个文档对象

  • 所有 HTML 元素都是元素节点

  • 所有 HTML 属性都是属性节点

  • 插入到 HTML 元素文本是文本节点

  • 注释是注释节点



元素对象

在 HTML DOM 中, 元素对象代表着一个 HTML 元素。

元素对象 的 子节点可以是, 可以是元素节点,文本节点,注释节点。

NodeList 对象 代表了节点列表,类似于 HTML元素的子节点集合。

元素可以有属性。属性属于属性节点(查看下一节)。

浏览器支持

所有主流浏览器都支持 元素对象 和 NodeList 对象。.

属性和方法

以上属性和方法可适用于所有 HTML 元素:

属性 / 方法描述
element.accessKey设置或返回accesskey一个元素
element.addEventListener()向指定元素添加事件句柄
element.appendChild()为元素添加一个新的子元素
element.attributes返回一个元素的属性数组
element.childNodes返回元素的一个子节点的数组
element.classlist返回元素的类名,作为 DOMTokenList 对象。
element.className设置或返回元素的class属性
element.clientHeight在页面上返回内容的可视高度(不包括边框,边距或滚动条)
element.clientWidth在页面上返回内容的可视宽度(不包括边框,边距或滚动条)
element.cloneNode()克隆某个元素
element.compareDocumentPosition()比较两个元素的文档位置。
element.contentEditable设置或返回元素的内容是否可编辑
element.dir设置或返回一个元素中的文本方向
element.firstChild返回元素的第一个子节点
element.focus()设置文档或元素获取焦点
element.getAttribute()返回指定元素的属性值
element.getAttributeNode()返回指定属性节点
element.getElementsByTagName()返回指定标签名的所有子元素集合。
element. getElementsByClassName()返回文档中所有指定类名的元素集合,作为 NodeList 对象。
element.getFeature()返回指定特征的执行APIs对象。
element.getUserData()返回一个元素中关联键值的对象。
element.hasAttribute()如果元素中存在指定的属性返回 true,否则返回false。
element.hasAttributes()如果元素有任何属性返回true,否则返回false。
element.hasChildNodes()返回一个元素是否具有任何子元素
element.hasfocus()返回布尔值,检测文档或元素是否获取焦点
element.id设置或者返回元素的 id。
element.innerHTML设置或者返回元素的内容。
element.insertBefore()现有的子元素之前插入一个新的子元素
element.isContentEditable如果元素内容可编辑返回 true,否则返回false
element.isDefaultNamespace()如果指定了namespaceURI 返回 true,否则返回 false。
element.isEqualNode()检查两个元素是否相等
element.isSameNode()检查两个元素所有有相同节点。
element.isSupported()如果在元素中支持指定特征返回 true。
element.lang设置或者返回一个元素的语言。
element.lastChild返回的最后一个子元素
element.namespaceURI返回命名空间的 URI。
element.nextSibling返回该元素紧跟的一个元素
element.nodeName返回元素的标记名(大写)
element.nodeType返回元素的节点类型
element.nodeValue返回元素的节点值
element.normalize()使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点
element.offsetHeight返回,任何一个元素的高度包括边框和填充,但不是边距
element.offsetWidth返回元素的宽度,包括边框和填充,但不是边距
element.offsetLeft返回当前元素的相对水平偏移位置的偏移容器
element.offsetParent返回元素的偏移容器
element.offsetTop返回当前元素的相对垂直偏移位置的偏移容器
element.ownerDocument返回元素的根元素(文档对象)
element.parentNode返回元素的父节点
element.previousSibling返回某个元素紧接之前元素
element.querySelector()返回匹配指定 CSS 选择器元素的第一个子元素
document.querySelectorAll()返回匹配指定 CSS 选择器元素的所有子元素节点列表
element.removeAttribute()从元素中删除指定的属性
element.removeAttributeNode()删除指定属性节点并返回移除后的节点。
element.removeChild()删除一个子元素
element.removeEventListener()移除由 addEventListener() 方法添加的事件句柄
element.replaceChild()替换一个子元素
element.scrollHeight返回整个元素的高度(包括带滚动条的隐蔽的地方)
element.scrollLeft返回当前视图中的实际元素的左边缘和左边缘之间的距离
element.scrollTop返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离
element.scrollWidth返回元素的整个宽度(包括带滚动条的隐蔽的地方)
element.setAttribute()设置或者改变指定属性并指定值。
element.setAttributeNode()设置或者改变指定属性节点。
element.setIdAttribute()
element.setIdAttributeNode()
element.setUserData()在元素中为指定键值关联对象。
element.style设置或返回元素的样式属性
element.tabIndex设置或返回元素的标签顺序。
element.tagName作为一个字符串返回某个元素的标记名(大写)
element.textContent设置或返回一个节点和它的文本内容
element.title设置或返回元素的title属性
element.toString()一个元素转换成字符串
nodelist.item()返回某个元素基于文档树的索引
nodelist.length返回节点列表的节点数目。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

avaScript 的 Rest 和 Spread 操作符自 ES6 引入以来,大大改变了开发者处理数组和对象的方式。这些操作符提供了更简洁、更易读的语法,使代码更易于理解和维护。本文将介绍如何有效地使用 Rest 和 Spread 操作符,并通过示例进行说明。

Rest 和 Spread 操作符简介

Rest 操作符(...)允许你将多个元素收集到一个数组或对象中,通常用于函数参数中,将参数列表转换为数组。而 Spread 操作符(...)则用于将数组或对象展开为单个元素,这在复制、合并或传递数组和对象时特别有用。

理解并掌握这些操作符可以大大提升你的 JavaScript 编码水平,使代码更加简洁和富有表现力。

Rest 操作符的应用

函数参数处理

Rest 操作符在函数定义中非常有用,可以处理不定数量的参数:

function multiply(...numbers) {
  return numbers.reduce((product, number) => product * number, 1);
}
console.log(multiply(2, 3, 4)); // 输出: 24

在这个例子中,multiply 函数接受任意数量的参数并进行相乘。Rest 操作符将所有参数收集到 numbers 数组中,使得可以轻松应用 reduce 等数组方法。

数组解构

Rest 操作符还可以在数组解构中使用,将剩余元素收集到一个新数组中:

const [head, ...tail] = ['a', 'b', 'c', 'd'];
console.log(head);  // 输出: 'a'
console.log(tail);  // 输出: ['b', 'c', 'd']

在这个例子中,数组的第一个元素被赋值给 head,其余元素则被收集到 tail 数组中。

Spread 操作符的应用

数组合并

使用 Spread 操作符,数组合并变得非常简单:

const fruits = ['apple', 'banana'];
const vegetables = ['carrot', 'potato'];
const food = [...fruits, ...vegetables];
console.log(food); // 输出: ['apple', 'banana', 'carrot', 'potato']

在这个例子中,Spread 操作符将 fruitsvegetables 展开为单个元素并合并到 food 数组中。

数组复制

创建数组副本同样很方便:

const numbers = [1, 2, 3];
const numbersCopy = [...numbers];
console.log(numbersCopy); // 输出: [1, 2, 3]

这样创建了一个包含与 numbers 数组相同元素的新数组 numbersCopy,修改 numbersCopy 不会影响 numbers

对象合并

Spread 操作符还可以用于对象的合并:

const person = { name: 'Alice', age: 25 };
const job = { title: 'developer', company: 'Tech Co.' };
const employee = { ...person, ...job };
console.log(employee); // 输出: { name: 'Alice', age: 25, title: 'developer', company: 'Tech Co.' }

在这个例子中,personjob 被合并到 employee 对象中,形成一个新的对象。

高级技巧

对象解构中的 Rest 操作符

Rest 操作符可以在对象解构中使用,收集剩余的属性:

const { title, ...details } = { title: 'Book', author: 'John Doe', year: 2021 };
console.log(title);    // 输出: 'Book'
console.log(details);  // 输出: { author: 'John Doe', year: 2021 }

这个例子展示了如何提取特定属性(title),同时将剩余属性收集到 details 对象中。

Spread 操作符用于函数参数

在调用接受多个参数的函数时,Spread 操作符可以简化传递数组元素作为参数:

function concatenate(str1, str2, str3) {
  return str1 + str2 + str3;
}
const words = ['Hello', ' ', 'World!'];
console.log(concatenate(...words)); // 输出: 'Hello World!'

通过展开 words 数组,每个元素作为独立参数传递给 concatenate 函数。

结论

JavaScript 中的 Rest 和 Spread 操作符是强大的工具,可以极大地增强代码的灵活性和可读性。不论是处理数组、对象还是函数参数,这些操作符都能提供优雅的解决方案。通过掌握这些操作符,你可以编写更简洁、高效的代码,提升整体开发体验。

理解并有效使用 Rest 和 Spread 操作符,不仅可以简化当前项目,还能为未来的挑战做好准备,使你的 JavaScript 代码更易维护和表达。