跳到主要内容位置

DOM 中 Node 和 Element 类型的区别

在 DOM 中,Node 和 Element 是两个常用的类型。虽然它们都表示文档中的节点,但它们之间有一些区别。

Node 类型​

Node 类型是 DOM 树中所有节点的基础类型。它有许多具体的子类型,包括 Element、Text、Comment、Document 等。Node 类型定义了节点的通用属性和方法,例如 nodeName、nodeValue、parentNode、appendChild() 等等。

以下是 Node 类型的一些重要属性和方法:

  • nodeName:节点的名称。
  • nodeValue:节点的值。
  • nodeType:节点的类型,可以是元素节点、文本节点、注释节点、文档节点等。
  • parentNode:节点的父节点。
  • childNodes:节点的子节点列表。
  • appendChild():将一个节点添加到当前节点的子节点列表的末尾。

Element 类型​

Element 类型表示文档中的元素节点。它是 Node 类型的子类型,因此继承了 Node 类型的所有属性和方法,同时还有一些特有的属性和方法。

以下是 Element 类型的一些重要属性和方法:

  • tagName:元素的标签名。
  • id:元素的唯一标识符。
  • className:元素的类名。
  • getAttribute():获取元素的指定属性值。
  • setAttribute():设置元素的指定属性值。

在使用 Element 类型时,您可以使用它的特有属性和方法来操作元素节点。例如,您可以使用 setAttribute() 方法来设置元素的属性,如下所示:

var element = document.createElement("div");
element.setAttribute("class", "my-class");

上面的代码创建了一个新的 div 元素,并为它设置了一个类名为 my-class 的属性。

Node 和 Element 类型的区别​

尽管 Node 和 Element 类型都表示文档中的节点,但它们之间有一些重要的区别:

  1. Node 类型是 Element 类型的基础类型,因此 Element 类型继承了 Node 类型的所有属性和方法。
  2. Element 类型是 Node 类型的子类型,因此它具有一些 Node 类型没有的特定属性和方法,例如 tagName、id、className、getAttribute() 和 setAttribute()。
  3. Node 类型可以表示文档中的任何类型的节点,包括元素节点、文本节点、注释节点、文档节点等。而 Element 类型仅表示文档中的元素节点。
  4. 在操作 DOM 树时,Node 类型和 Element 类型有不同的用途。通常,您可以使用 Node 类型的通用属性和方法来遍历和操作 DOM 树中的节点,而使用 Element 类型的特定属性和方法来操作元素节点。
提示

一系列的课程让你成为高级前端工程师。课程覆盖工作中所有常用的知识点和背后的使用逻辑,示例全部都为工作项目简化而来,学完即可直接上手开发!

即使你已经是高级前端工程师,在课程里也可能会发现新的知识点和技巧,让你的工作更加轻松!

《React 完全指南》课程,包含 React、React Router 和 Redux 详细介绍,所有示例改编自真实工作代码。点击查看详情。

《Vue 3.x 全家桶完全指南与实战课程》课程,包括 Vue 3.x、TypeScript、Vue Router 4.x、Vuex 4.x 所有初级到高级的语法特性详解,让你完全胜任 Vue 前端开发的工作。点击查看详情。

《React即时通信UI实战》课程,利用 Storybook、Styled-components、React-Spring 打造属于自己的组件库。

《JavaScript 基础语法详解》本人所著图书,包含 JavaScript 全面的语法知识和新特性, 可在京东、当当、淘宝等各大电商购买