ES2021:使用最佳实践进行 DOM 操作

介绍

在 Web 开发中,操作文档对象模型(Document Object Model,简称 DOM)是经常遇到的任务之一,包括选择元素、改变元素属性或内容、添加或移除元素等。在过去的几年中,JavaScript 发展迅速,但许多旧的 DOM 操作习惯仍然存在,而新的最佳实践不断涌现。ES2021(即 ECMAScript 2021)为 DOM 操作提供了许多方便且更具可读性的语法和函数,本文将探讨其中一些最佳实践和示例代码。

选择元素

在操作 DOM 之前,我们通常需要选择需要操作的元素。选择元素的方法主要有 document.querySelector()document.querySelectorAll()Element.querySelector()Element.querySelectorAll() 四种。它们都接受一个字符串选择器参数,返回一个 DOM 元素或元素列表。

例如,我们要选择所有 class 为 highlightdiv 元素,可以使用以下代码:

-- ----
----- --------- - -------------------------------------------
-- -----
----- -------- - ----------------------------------------

在 ES2021 中,这些函数都可以使用逻辑操作符进行扩展。例如,我们可以使用 :not():first-child:nth-child() 等伪类选择器,或者通过组合选择器选择多个元素。以下是一些例子:

-- ---- ----- - ----------------- --- --
----- --------- - -------------------------------------------------------------
-- ------------
----- --------- - ------------------------------------------- -----------------

这让选择符变得更加灵活,使我们可以更轻松地选择元素。

修改元素内容

在改变元素内容时,我们有多种选择。以下是几种最常用的技术。

innerHTML

使用 innerHTML 修改元素内容是非常常见的,它可以很方便地插入 HTML 代码。例如,我们想要向 div 中添加一张图片和一些文本,可以这样写:

----- --- - ------------------------------
------------- - ----- ---------------------------

但是,使用 innerHTML 存在安全漏洞,可以将恶意代码注入页面。因此,我们应该避免直接使用 innerHTML,特别是在处理用户的输入时。如果我们必须使用 innerHTML,应该对其输入进行过滤和检查。

textContent/innerText

另一种更安全的方法是使用 textContentinnerText,它们可以只显示元素的文本内容。其中,textContent 会保留所有空格和缩进,而 innerText 会删除空格并将换行符转换为空格。(但也正因此,它的性能通常略差于 textContent

----- --- - ------------------------------
--------------- - ----------

createElement()/createTextNode()

如果我们要动态创建新元素,我们可以使用 createElement()createTextNode()createElement() 用于创建一个新的元素节点,createTextNode() 用于创建一个新的文本节点。接着,我们可以使用 appendChild()insertBefore() 将这些节点插入到具有父元素的元素中。

----- --- - ------------------------------
----- --- - ------------------------------
----- ---- - -----------------------------------
------- - --------------

---------------------
----------------------

replaceChild()

另一个修改元素内容的方法是使用 replaceChild(),它可以将一个节点替换为另一个节点。和 appendChild() 一样,我们可以使用 createElement()createTextNode() 创建要插入的新节点。

----- --- - ------------------------------
----- ------- - ---------------------------------
----- ------- - ---------------

------------------------- ---------

修改元素属性

除了修改元素内容,我们还可以修改其属性,例如设置 srchrefclassstyle 等。以下是一些最常用的操作。

getAttribute()/setAttribute()

使用 getAttribute()setAttribute() 可以获取或设置特定属性的值。

----- --- - ------------------------------
----- --- - ------------------------
----------------------- -----------

removeAttribute()

可以使用 removeAttribute() 方法移除一个属性。

----- --- - ------------------------------
---------------------------

classList.add()/classList.remove()

可以使用 classList.add()classList.remove() 来添加或删除一个类。

----- --- - ------------------------------
-------------------------------
----------------------------------

style

可以使用 style 访问和修改元素的 CSS 属性。

----- --- - ------------------------------
--------------- - ------
------------------ - -------

结论

ES2021 为 DOM 操作提供了许多方便的新语法和函数,包括扩展选择器、替换节点、使用 classList 和 style,这些最佳实践可以帮助我们更快、更安全、更优雅地操作 DOM。在实际开发中,我们可以结合这些技巧,写出更可读、更健壮的代码。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66f4768af40ec5a964ede2fa


猜你喜欢

  • 开发 SPA 网站和免 download 客户端应用的策略

    在当前的网络世界中,用户越来越喜欢快速的响应和对于Web应用程序的更好体验。因此,现代Web应用程序开发必须围绕如何构建一个单页应用程序(SPA)展开。SPA是一个现代的Web应用程序开发技术,其呈现...

    2 个月前
  • Bootstrap框架中实现响应式导航的方法及优化

    在现代化的前端开发中,Bootstrap是一款广为使用的响应式UI框架,它提供了许多强大的组件和工具,使前端开发变得更加简单和高效。其中较为常用的组件之一是导航栏,而Bootstrap则提供了强大的解...

    2 个月前
  • 如何在 Material Design 中设置 Action Button 图标和颜色?

    如何在 Material Design 中设置 Action Button 图标和颜色? Material Design 是 Google 设计的一种设计语言,用于开发 Android 应用程序和网页...

    2 个月前
  • Express.js 方法 override 中间件的使用方法

    在 Express.js 应用程序中,我们可以使用 body-parser 中间件来解析请求的正文。然而,由于 HTTP 方法的限制,我们有时不能直接发送 PUT 或 DELETE 请求。

    2 个月前
  • 谷歌公司 JavaScript v8 版的新特性

    JavaScript 是一种流行的脚本语言,用于编写现代 Web 应用程序。JavaScript v8 是谷歌公司开发的一款高性能 JavaScript 引擎,具有快速编译和执行 JavaScript...

    2 个月前
  • PWA 中的移动端优化建议

    1. 确认应用程序是否需要 PWA 在决定将应用程序转换为 PWA 之前,需要考虑您的应用程序是否适合 PWA。这取决于您的应用程序是否需要离线缓存、推送通知或快速加载等功能。

    2 个月前
  • 解决 Headless CMS 在移动端响应速度慢的问题

    简介 Headless CMS 是近年来非常热门的一种 CMS,它将内容与样式分离,使得开发者可以更加专注于业务逻辑和数据管理。然而,很多开发者在使用 Headless CMS 进行移动端开发时会发现...

    2 个月前
  • Flexbox 入门例子

    介绍 Flexbox 是一种为 web 页面布局提供更高级、更现代化的解决方案的新型布局方式。它可以让开发人员更轻松地实现复杂的布局效果,而不需要使用传统的方法,如浮动、定位和 table 布局。

    2 个月前
  • Redux 中状态管理工具的选择建议

    Redux 是一个强大的状态管理工具,它帮助前端开发者管理应用程序的状态。Redux 通过单一数据源的方式,简化了应用程序的复杂性,增强了应用程序的可维护性和可扩展性。

    2 个月前
  • 如何使用 Next.js 构建一个单页应用?

    作为一名前端开发工程师,我们经常要为客户或者自己的项目搭建一个高效且可扩展的单页应用。在过去,这个过程可能需要大量的手动编码、配置和调试。然而现在有了 Next.js,这一切已经变得异常简单。

    2 个月前
  • Kubernetes 集群管理工具 Kops 的使用方法详解

    在现代软件开发中,Kubernetes 是一种广泛使用的容器编排和管理工具,它可以自动化部署、伸缩和管理多个容器化应用程序。Kops 是一种集群管理工具,它可以帮助您轻松地在云环境中部署 Kubern...

    2 个月前
  • 使用 Cypress 进行页面跳转测试的方法分享

    在前端开发中,经常需要进行页面跳转测试。针对不同的页面跳转场景,我们需要采用不同的测试方法。在这篇文章中,我将分享如何使用 Cypress 进行各种页面跳转测试。 前置条件 在使用 Cypress 进...

    2 个月前
  • Serverless 架构应用的当前问题及解决方案

    随着云计算和云服务的不断发展,Serverless 架构已经成为了前端开发的主流趋势。Serverless 架构具有高效、便捷、可维护等优点,但也面临着一些实际的问题。

    2 个月前
  • Koa 框架的优化与性能提升手段

    Koa 是一个基于 Node.js 平台的 Web 开发框架,它提供了极简的 API 和优雅的异步模型,使得开发者可以更加轻松地编写可靠、高效的 Web 应用程序。

    2 个月前
  • 重要的无障碍设计要素:如何使得界面能够被屏幕阅读器识别

    网络已经成为现代社会的重要组成部分,我们已经逐渐习惯使用网站、应用程序和移动设备来完成各种任务。然而,有一些人因为身体、视力或听力障碍,无法完全享受这些技术带来的便利。

    2 个月前
  • PM2 启动 Node.js 应用时报错的解决方法

    为了有效地管理 Node.js 应用程序,许多开发人员使用 PM2 来启动和监视它们。但是,在 PM2 中启动 Node.js 应用时,有时会遇到错误,这将导致应用程序无法启动。

    2 个月前
  • Angular 中的多语言(multilingual)实现方法详解

    在全球范围内,不同国家和地区使用不同的语言进行交流与沟通。在网站和应用程序设计中,支持多语言的实现变得越来越重要。在本文中,我们将详细介绍在 Angular 中实现多语言支持的方法,包括利用 Angu...

    2 个月前
  • React 中如何使用 CSS 样式

    React 是一种流行的 JavaScript 库,用于构建用户界面。在 React 中,可以使用多种方法来引入和管理样式。本文将介绍 React 中的几种常用 CSS 方式,包括内联样式、外部样式表...

    2 个月前
  • 用 Jest 进行 React 组件测试的最佳实践

    在前端开发中,测试是一项不可或缺的工作。然而,在 React 组件开发中,由于组件数量和互动复杂度的增加,测试变得更加困难。Jest 是一个非常流行的 JavaScript 测试框架,它可以用于测试 ...

    2 个月前
  • 如何使用 Express.js 进行 Gzip 压缩

    什么是 Gzip 压缩 在前端开发中,优化网站性能是一个必不可少的工作。其中一个常用的技术就是 Gzip 压缩。 Gzip 压缩是一种数据压缩算法,通过将重复出现的数据替换为短的标记来减少文件的体积。

    2 个月前

相关推荐

    暂无文章