JavaScript精准捕获DOM元素五种方法

 更新时间:2026年01月23日 09:23:01   作者:用户80110532256  
在 JavaScript 中,要想对网页元素进行操作,无论是修改内容、调整样式还是响应用户交互,第一步永远是找到这个元素,就需要我们熟练掌握从 DOM 树中获取特定元素的方法,本文将详细介绍五种最常用、最重要的 DOM 查询方法,需要的朋友可以参考下

在 JavaScript 中,要想对网页元素进行操作——无论是修改内容、调整样式还是响应用户交互——第一步永远是找到这个元素。这就需要我们熟练掌握从 DOM 树中获取特定元素的方法。本文将详细介绍五种最常用、最重要的 DOM 查询方法,助你轻松定位目标元素。

1. 根据 ID 获取元素:getElementById

这是最常见、最快速的查找方式。因为 HTML 规范要求 id 在整个文档中必须是唯一的,所以此方法只返回一个元素。

  • 语法: document.getElementById(idString)
  • 参数: idString - 一个字符串,对应目标元素的 id 属性值。
  • 返回值: 匹配的 Element 对象,若未找到则返回 null
// HTML: <div id="main-content">...</div>
const mainDiv = document.getElementById('main-content');
if (mainDiv) { // 检查元素是否存在
  console.log(mainDiv.textContent); // 操作元素
}

2. 根据标签名获取元素:getElementsByTagName

获取指定标签名的所有元素。

  • 语法: document.getElementsByTagName(tagName)
  • 参数: tagName - 一个字符串,表示要匹配的标签名(如 'div', 'p', 'a')。传入 '*' 可获取所有元素。
  • 返回值: 一个 HTMLCollection 对象(类数组对象),包含所有匹配的元素。
// HTML: <p>Paragraph 1</p> <p>Paragraph 2</p>
const allParagraphs = document.getElementsByTagName('p');
console.log(allParagraphs.length); // 输出: 2
for (let i = 0; i < allParagraphs.length; i++) {
  allParagraphs[i].style.color = 'blue'; // 批量修改样式
}

3. 根据类名获取元素:getElementsByClassName

获取具有指定 class 名的所有元素。

  • 语法: document.getElementsByClassName(className)
  • 参数: className - 一个字符串,表示要匹配的 class 属性值。
  • 返回值: 一个 HTMLCollection 对象,包含所有匹配的元素。
// HTML: <span class="highlight">Text A</span> <div class="highlight">Text B</div>
const highlightedElements = document.getElementsByClassName('highlight');
Array.from(highlightedElements).forEach(el => {
  el.style.backgroundColor = 'yellow'; // 使用 Array.from 将 HTMLCollection 转换为数组以便使用 forEach
});

4. 根据name属性获取元素:getElementsByName

主要用于获取具有特定 name 属性的元素(常见于表单控件)。

  • 语法: document.getElementsByName(name)
  • 参数: name - 一个字符串,表示要匹配的 name 属性值。
  • 返回值: 一个 NodeList 对象,包含所有匹配的元素。
// HTML: <input name="username" type="text"> <input name="password" type="password">
const usernameInputs = document.getElementsByName('username');
console.log(usernameInputs[0].value); // 获取用户名输入框的值

5. 使用 CSS 选择器获取元素:querySelector和querySelectorAll

这是最强大、最灵活的查询方式,支持标准的 CSS 选择器语法。

5.1. 获取第一个匹配元素:querySelector

  • 语法: document.querySelector(selectors)
  • 参数: selectors - 一个字符串,包含一个或多个 CSS 选择器(如 '.my-class', '#my-id', 'div > p', 'input[type="text"]' 等)。
  • 返回值: 匹配指定选择器的第一个 Element 对象,若未找到则返回 null
// HTML: <div class="container"><p class="intro">Hello</p><p>World</p></div>
const firstIntroParagraph = document.querySelector('.intro'); // 获取第一个 class 为 intro 的 p 元素
console.log(firstIntroParagraph.textContent); // 输出: Hello

const firstDivWithContainerClass = document.querySelector('div.container'); // 获取第一个 class 为 container 的 div

5.2. 获取所有匹配元素:querySelectorAll

  • 语法: document.querySelectorAll(selectors)
  • 参数: selectors - 一个字符串,包含一个或多个 CSS 选择器。
  • 返回值: 一个 NodeList 对象,包含所有匹配指定选择器的 Element 对象。
// HTML: <p class="note">Note 1</p> <aside class="note">Note 2</aside>
const allNotes = document.querySelectorAll('.note'); // 获取所有 class 为 note 的元素
allNotes.forEach(note => {
  note.style.border = '1px solid green';
});

HTMLCollectionvsNodeList

  • HTMLCollection (来自 getElementsBy... 方法): 是一个动态集合。当 DOM 结构发生变化(如添加或删除了匹配的元素),这个集合会自动更新。
  • NodeList (来自 querySelectorAll): 是一个静态(快照)集合。获取后,其内容不会随 DOM 的变化而变化。

注意: querySelectorAll 返回的 NodeList 虽然是静态的,但它比 getElementsBy... 返回的动态集合更常被使用,因为它支持更广泛的 CSS 选择器,并且可以通过 forEach, map, filter 等数组方法进行遍历(需要先转换或使用 for...of 循环)。

方法选择建议

  • 查找单个唯一元素: 优先使用 document.getElementById(id),效率最高。
  • 需要强大的选择能力: 使用 document.querySelector(selectors) (单个) 或 document.querySelectorAll(selectors) (多个)。它们的 CSS 选择器语法极其灵活,几乎能满足所有查找需求。
  • 按标签或类名批量查找: document.getElementsByTagName(tagName)document.getElementsByClassName(className) 也是很好的选择,尤其当你确实需要动态集合时(虽然大部分场景下 querySelectorAll 已足够)。

结语

掌握这些 DOM 查询方法是进行前端开发的基础。getElementById 用于精准定位,querySelector/querySelectorAll 用于灵活查找,getElementsBy... 系列则提供了基于标签、类名、属性的传统方式。根据实际需求选择合适的方法,你就能轻松地在 DOM 树中找到任何你想操作的元素。

以上就是JavaScript精准捕获DOM元素五种方法的详细内容,更多关于JavaScript捕获DOM元素的资料请关注脚本之家其它相关文章!

相关文章

  • 微信小程序可滑动月日历组件使用详解

    微信小程序可滑动月日历组件使用详解

    这篇文章主要为大家详细介绍了微信小程序可滑动月日历组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • JavaScript实现密码框输入验证

    JavaScript实现密码框输入验证

    这篇文章主要为大家详细介绍了JavaScript实现密码框输入验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • JavaScript Promise原理与实现刨析

    JavaScript Promise原理与实现刨析

    首先呢,Promise是异步中比较重要的知识点,学习的最好方法就是掌握它的基本原理。所以这一篇主要说一下如何用JS来实现一个自己的promise
    2022-10-10
  • js 取消超链接的方法小结

    js 取消超链接的方法小结

    今天在工作中需要将某个链接给取消实现只触发事件的目的,后来发现批量取消链接等,脚本之家简单的给整理了下,希望对需要的朋友有所帮助。
    2011-10-10
  • js判断浏览器类型,版本的代码(附多个实例代码)

    js判断浏览器类型,版本的代码(附多个实例代码)

    当前世界上有很多种浏览器,除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器,有时候我们需要判断浏览器与版本方便后续的操作,一句话浏览器的兼容性太差了,缺少标准
    2014-05-05
  • 微信小程序的部署方法步骤

    微信小程序的部署方法步骤

    这篇文章主要介绍了微信小程序的部署方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • seajs1.3.0源码解析之module依赖有序加载

    seajs1.3.0源码解析之module依赖有序加载

    这里是seajs loader的核心部分,有些IE兼容的部分还不是很明白,主要是理解各个模块如何依赖有序加载,以及CMD规范
    2012-11-11
  • JavaScript中的类型判断你真的了解了吗

    JavaScript中的类型判断你真的了解了吗

    这篇文章主要为大家详细介绍了JavaScript中类型判断的相关常见方法,文中的示例代码讲解详细,对我们深入学习JavaScript有一定帮助,需要的可以参考下
    2023-11-11
  • 2022发布ECMAScript新特性盘点

    2022发布ECMAScript新特性盘点

    这篇文章主要为大家介绍了2022发布ECMAScript新特性盘点,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • uni-app web-view的使用示例详解

    uni-app web-view的使用示例详解

    这篇文章主要介绍了uni-app web-view的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07

最新评论