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元素的资料请关注脚本之家其它相关文章!

相关文章

  • JS将数字转换成三位逗号分隔的样式(示例代码)

    JS将数字转换成三位逗号分隔的样式(示例代码)

    本篇文章主要是对JS将数字转换成三位逗号分隔的样式(示例代码)进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • 微信小程序textarea层级过高(盖住其他元素)问题的解决办法

    微信小程序textarea层级过高(盖住其他元素)问题的解决办法

    这篇文章主要给大家介绍了关于微信小程序textarea层级过高(盖住其他元素)问题的解决办法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • JavaScript 逻辑且(&&)和逻辑或(||)的运用小结

    JavaScript 逻辑且(&&)和逻辑或(||)的运用小结

    这篇文章主要介绍了JavaScript 逻辑且(&&)和逻辑或(||)的妙用 ,通过实例代码介绍了逻辑且(&&)和逻辑或(||)的详细用法,需要的朋友可以参考下
    2022-09-09
  • 基于JavaScript获取url参数2种方法

    基于JavaScript获取url参数2种方法

    这篇文章主要介绍了基于JavaScript获取url参数2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • JavaScript高级教程之如何玩转箭头函数

    JavaScript高级教程之如何玩转箭头函数

    箭头函数是在es6中添加的一种规范,箭头函数相当于匿名函数,简化了函数的定义,下面这篇文章主要给大家介绍了关于JavaScript高级教程之如何玩转箭头函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 微信小程序单选框组应用详解

    微信小程序单选框组应用详解

    这篇文章主要为大家详细介绍了微信小程序单选框组应用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 基于jstree使用AJAX请求获取数据形成树

    基于jstree使用AJAX请求获取数据形成树

    这篇文章主要为大家详细介绍了基于jstree使用AJAX请求获取数据形成树,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • JavaScript中数组sort()方法的基本使用与踩坑记录

    JavaScript中数组sort()方法的基本使用与踩坑记录

    : js中用方法sort()为数组排序,这篇文章主要给大家介绍了关于JavaScript中数组sort()方法的基本使用,sort()方法已经可以满足我们对数组的很多处理需求,需要的朋友可以参考下
    2021-06-06
  • js实现简洁大方的二级下拉菜单效果代码

    js实现简洁大方的二级下拉菜单效果代码

    这篇文章主要介绍了js实现简洁大方的二级下拉菜单效果代码,涉及javascript通过鼠标事件控制页面元素的动态变换技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Js面试算法详解

    Js面试算法详解

    AI的兴起,使得大家对算法的关注也越来越高。而作为一个前端工程师,算法很多时候是我们的弱点,本文译自国外一篇面试题。列出了一些简单算是跟算法相关的面试题
    2018-04-04

最新评论