JavaScript获取DOM元素的多种方法

 更新时间:2025年03月21日 09:41:25   作者:Dontla  
DOM是 HTML 和 XML 文档的编程接口,表现为网页结构的树状对象,每个对象对应页面的一部分,如 HTML 元素,获取 DOM 元素是交互式网页开发的核心,用于修改内容、样式或行为,本文给大家介绍了JavaScript获取DOM元素的多种方法,需要的朋友可以参考下

关键点

  • JavaScript 通过多种方法获取 DOM 元素,包括 getElementByIdgetElementsByClassName 等。
  • 这些方法适合不同场景,性能和灵活性各有优劣。
  • 研究表明,getElementById 是最快的,但 querySelector 更灵活。

简介

DOM(Document Object Model)是 HTML 和 XML 文档的编程接口,表现为网页结构的树状对象,每个对象对应页面的一部分,如 HTML 元素。获取 DOM 元素是交互式网页开发的核心,用于修改内容、样式或行为。

方法概述

JavaScript 提供了以下主要方法来获取 DOM 元素:

  • document.getElementById(id):按 ID 获取单个元素。
  • document.getElementsByClassName(classNames):按类名获取多个元素。
  • document.getElementsByTagName(tagName):按标签名获取多个元素。
  • document.getElementsByName(name):按 name 属性获取多个元素。
  • document.querySelector(cssSelector):按 CSS 选择器获取第一个匹配元素。
  • document.querySelectorAll(cssSelector):按 CSS 选择器获取所有匹配元素。

详细报告

引言

DOM(Document Object Model)是 HTML 和 XML 文档的编程接口,表现为网页结构的树状对象,每个对象对应页面的一部分,如 HTML 元素。获取 DOM 元素是交互式网页开发的核心,用于修改内容、样式或行为。JavaScript 提供了多种方法来选择和操作这些元素,适合不同场景,性能和灵活性各有优劣。

DOM 元素获取方法

以下是 JavaScript 中获取 DOM 元素的主要方法,每个方法都有其特定的使用场景和性能特点:

1. getElementById()(弃用)

  • 语法document.getElementById(id)
  • 说明:返回指定 ID 的元素。ID 在文档中是唯一的,因此该方法返回单个元素或 null(如果没有匹配的元素)。
  • 示例
<div id="myDiv">Hello</div>
<script>
const div = document.getElementById("myDiv");
console.log(div); // 输出 div 元素
</script>
  • 特点:研究表明,这是最快的获取元素方法,因为 ID 是唯一的,浏览器可以快速定位。

2. getElementsByClassName()(弃用)

  • 语法document.getElementsByClassName(classNames)
  • 说明:返回一个实时 HTMLCollection,包含所有具有指定类名的元素。如果传递多个类名(用空格分隔),则返回同时具有所有这些类的元素。
  • 示例
<div class="container main">Hello</div>
<div class="container">World</div>
<script>
const elements = document.getElementsByClassName("container");
console.log(elements); // 输出两个 div 元素
</script>
  • 特点:集合是实时的,DOM 变化时会自动更新。适合需要按类名批量操作元素。

3. getElementsByTagName()(弃用)

  • 语法document.getElementsByTagName(tagName)
  • 说明:返回一个实时 HTMLCollection,包含所有指定标签名的元素。
  • 示例
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<script>
const paragraphs = document.getElementsByTagName("p");
console.log(paragraphs); // 输出两个 p 元素
</script>
  • 特点:适合按标签类型批量获取元素,集合也是实时的。

4. getElementsByName()

  • 语法document.getElementsByName(name)
  • 说明:返回一个实时 NodeList,包含所有具有指定 name 属性的元素。name 属性通常用于表单元素,不保证唯一性。
  • 示例
<input type="text" name="username">
<input type="password" name="username">
<script>
const elements = document.getElementsByName("username");
console.log(elements); // 输出两个 input 元素
</script>
  • 特点:较少使用,适合表单相关操作。

5. querySelector()

  • 语法document.querySelector(cssSelector)
  • 说明:返回第一个匹配指定 CSS 选择器的元素。如果没有匹配,返回 null
  • 示例
<div class="container">Div 1</div>
<div class="container">Div 2</div>
<script>
const firstDiv = document.querySelector(".container");
console.log(firstDiv); // 输出第一个 class 为 container 的 div
</script>
  • 特点:灵活,支持复杂 CSS 选择器,适合现代开发。

6. querySelectorAll()

  • 语法document.querySelectorAll(cssSelector)
  • 说明:返回一个静态 NodeList,包含所有匹配指定 CSS 选择器的元素。如果没有匹配,返回空列表。
  • 示例
<div class="container">Div 1</div>
<div class="container">Div 2</div>
<script>
const divs = document.querySelectorAll(".container");
console.log(divs); // 输出两个 class 为 container 的 div
</script>
  • 特点:返回的列表是静态的,不随 DOM 变化更新,适合需要固定列表的场景。

最佳实践

使用场景建议

  • getElementById():当需要快速访问单个唯一元素时使用。
  • getElementsByClassName():当需要按类名批量操作多个元素时使用。
  • getElementsByTagName():当需要按标签类型批量获取元素时使用。
  • getElementsByName():当需要按 name 属性操作表单元素时使用。
  • querySelector():当需要使用复杂 CSS 选择器查找第一个匹配元素时使用。
  • querySelectorAll():当需要使用 CSS 选择器查找所有匹配元素时使用。

性能考虑

  • getElementById() 是最快的,因为 ID 是唯一的,浏览器可以快速定位。
  • querySelector 和 querySelectorAll 效率高且灵活,适合现代开发。
  • getElementsByClassName 和 getElementsByTagName 返回的集合是实时的,适合动态 DOM 场景;querySelectorAll 返回静态列表,适合固定列表需求。
  • 为了优化性能,建议选择器尽可能具体,减少浏览器需要检查的元素数量。例如,使用 document.getElementById("id").querySelector("selector") 比 document.querySelector("#id selector") 更高效。

表格总结

以下表格总结各方法的特性:

方法名返回类型是否实时适用场景
getElementByIdElement 或 null按 ID 获取单个唯一元素
getElementsByClassNameHTMLCollection按类名批量获取多个元素
getElementsByTagNameHTMLCollection按标签名批量获取多个元素
getElementsByNameNodeList按 name 属性获取表单元素
querySelectorElement 或 null按 CSS 选择器获取第一个匹配
querySelectorAllNodeList按 CSS 选择器获取所有匹配

意外细节

一个意外的细节是,getElementsByClassName 和 getElementsByTagName 返回的集合是实时的,这意味着如果 DOM 发生变化,集合会自动更新,而 querySelectorAll 返回的列表是静态的,不随 DOM 变化更新。这在动态 网页开发中可能影响性能和逻辑设计。

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

相关文章

  • TypeScript高级用法的知识点汇总

    TypeScript高级用法的知识点汇总

    这篇文章主要给大家介绍了关于TypeScript高级用法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用TypeScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • js bind 函数 使用闭包保存执行上下文

    js bind 函数 使用闭包保存执行上下文

    在javascript中,函数总是在一个特殊的上下文执行(称为执行上下文),如果你将一个对象的函数赋值给另外一个变量的话,这个函数的执行上下文就变为这个变量的上下文了。下面的一个例子能很好的说明这个问题
    2011-12-12
  • 微信小程序文字显示换行问题

    微信小程序文字显示换行问题

    这篇文章主要介绍了微信小程序文字显示换行问题,文中给出了解决方案,需要的朋友可以参考下
    2019-07-07
  • web打印小结

    web打印小结

    本文主要介绍了一款比较强大的web打印工具lodop实现将winform客户端的打印,移到网页上由客户自行打印,打印要求是根据一定的格式实现套打的过程与方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 微信小程序实现美团菜单

    微信小程序实现美团菜单

    这篇文章主要为大家详细介绍了微信小程序实现美团菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • JS判断文本框内容改变事件的简单实例

    JS判断文本框内容改变事件的简单实例

    本篇文章主要是对JS判断文本框内容改变事件的简单实例进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • js实现简单音乐播放器

    js实现简单音乐播放器

    这篇文章主要介绍了js实现简单音乐播放器,可拖动进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Object.defineProperty() 完整指南示例详解

    Object.defineProperty() 完整指南示例详解

    本文深入理解`Object.defineProperty()`的方法,包括基础概念、属性描述符的完整选项、常见使用场景等,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • JavaScript for in锚点的动态创建

    JavaScript for in锚点的动态创建

    主要包括for..in的使用,锚点的动态创建,状态栏文字效果
    2008-09-09
  • Bootstrap项目实战之子栏目资讯内容

    Bootstrap项目实战之子栏目资讯内容

    Bootstrap项目实战之资讯内容,本文主要学习制作一下子栏目资讯内容,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论