JavaScript获取DOM元素语法总结(getElementsByName()、querySelector()、querySelectorAll())

文章目录

  • JavaScript DOM 元素获取语法总结
    • 关键点
    • 简介
    • 方法概述
    • 详细报告
      • 引言
      • DOM 元素获取方法
        • 1. getElementById()(弃用)
        • 2. getElementsByClassName()(弃用)
        • 3. getElementsByTagName()(弃用)
        • 4. getElementsByName()
        • 5. querySelector()
        • 6. querySelectorAll()
      • 最佳实践
        • 使用场景建议
        • 性能考虑
      • 表格总结
      • 意外细节
      • 关键引用

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

表格总结

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

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

意外细节

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

关键引用

  • W3Schools JavaScript DOM Elements
  • DigitalOcean How To Access Elements in the DOM
  • MDN Locating DOM elements using selectors
  • W3Schools JavaScript DOM Document
  • MDN Document getElementById method
  • GeeksforGeeks How to select DOM Elements in JavaScript
  • Tutorialspoint JavaScript DOM Elements

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tableau之人口金字塔、漏斗图、箱线图

一、人口金字塔 人口金字塔在本质上就是成对的条形图 人口金字塔是一种特殊的旋风图 1、数据处理 对异常数据进行处理 2、创建人口金字塔图 将年龄进行分桶 将男女人数数据隔离开 分别绘制两个条形图 双击男性条形图底部&#xff0c;将数据进行翻转&#xff08;倒序&a…

首次使用WordPress建站的经验分享(一)

之前用过几种内容管理系统(CMS),如:dedeCMS、phpCMS、aspCMS,主要是为了前端独立建站,达到预期的效果,还是需要一定的代码基础的,至少要有HTML、Css、Jquery基础。 据说WordPress 是全球最流行的内容管理系统CMS,从现在开始记录一下使用WordPress 独立建站的步骤 选购…

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…

人工智能 阿里云算力服务器的使用

获取免费的阿里云服务器 阿里云免费使用地址&#xff1a; https://free.aliyun.com/ 选择 人工智能平台 PAI 选择交互式建模 再选建立实例。 选择对应的GPU 和镜像&#xff0c;点击确认。 注意&#xff1a;250个小时&#xff0c;用的时候开启&#xff0c;不用的时候关闭&…

mysql将表导出为sql文件

使用mysqldump命令 mysqldump是MySQL提供的一个命令行工具&#xff0c;用于导出数据库或表的结构和数据。要将表导出为SQL文件&#xff0c;可以使用以下命令&#xff1a; mysqldump -uroot -p123456 database_name table_name > output_file.sql

用HTML5+CSS+JavaScript实现新奇挂钟动画

用HTML5+CSS+JavaScript实现新奇挂钟动画 引言 在技术博客中,如何吸引粉丝并保持他们的关注?除了干货内容,独特的视觉效果也是关键。今天,我们将通过HTML5、CSS和JavaScript实现一个新奇挂钟动画,并将其嵌入到你的网站中。这个动画不仅能让你的网站脱颖而出,还能展示你的…

大语言模型(LLM)微调技术笔记

图1&#xff1a;大模型进化树2 大模型微调 在预训练后&#xff0c;大模型可以获得解决各种任务的通用能力。然而&#xff0c;越来越多的研究表明&#xff0c;大语言模型的能力可以根据特定目标进一步调整。 这就是微调技术&#xff0c;目前主要有两种微调大模型的方法1&…

AI汽车新风向:「死磕」AI底盘,引爆线控底盘新增长拐点

2025开年&#xff0c;DeepSeek火爆出圈&#xff0c;包括吉利、东风汽车、上汽、广汽、长城、长安、比亚迪等车企相继官宣接入&#xff0c;掀起了“AI定义汽车”浪潮。 而这股最火的AI汽车热潮&#xff0c;除了深度赋能智能座舱、智能驾驶等AI竞争更白热化的细分场景&#xff0…

硬件学习笔记--46 电能表影响量试验梳理

目录 1.电流和电压电路中的谐波影响试验 1&#xff09;电流和电压电路中谐波——第5次谐波试验 2&#xff09;电流和电压电路中谐波——方顶波波形试验 3&#xff09;​​​​​​​电流和电压电路中谐波——尖顶波波形试验 4&#xff09;​​​​​​​电流和电压电路中谐…

第15天学习:类和对象的概念

我用大白话生活化例子帮你彻底搞懂类和对象&#xff01;&#x1f436; &#x1f308; 1分钟快速理解版 类 设计图纸&#xff08;比如&#xff1a;手机设计图&#xff09; 对象 根据图纸造出来的实物&#xff08;比如&#xff1a;你的iPhone 15和小明的华为P60&#xff09; …

Linux 命令大全完整版(05)

2. Linux 系统设置命令 export 功能说明&#xff1a;设置或显示环境变量。语  法&#xff1a;export [-fnp][变量名称][变量设置值]补充说明&#xff1a;在 shell 中执行程序时&#xff0c;shell 会提供一组环境变量。export 可新增、修改或删除环境变量&#xff0c;供后续…

deepseek清华大学第二版 如何获取 DeepSeek如何赋能职场应用 PDF文档 电子档(附下载)

deepseek清华大学第二版 DeepSeek如何赋能职场 pdf文件完整版下载 https://pan.baidu.com/s/1aQcNS8UleMldcoH0Jc6C6A?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/3ee62050a2ac

01 冲突域和广播域的划分

目录 1、冲突域和广播域的划分 1.1、冲突域 1.2、广播域 1.3、对比总结 1.4、冲突域与广播域个数计算例题 2、交换机和路由器的结构 2.1、交换机的结构 2.2、路由器的结构 1、冲突域和广播域的划分 1.1、冲突域 冲突域是指网络中可能发生数据帧冲突的物理范围。当多…

vLLM学习1

调用方式 一、vLLM 提供的两种调用方式 1. Offline Batched Inference&#xff08;离线批处理&#xff09; 调用特点&#xff1a;一次性传入一批&#xff08;batch&#xff09;的请求&#xff0c;等待所有请求都处理完毕后&#xff0c;一次性返回推理结果。对用户而言&#x…

SpringSecurity请求流转的本质

1. SpringSecurity核心源码分析 分析SpringSecurity的核心原理,那么我们从哪开始分析?以及我们要分析哪些内容? 系统启动的时候SpringSecurity做了哪些事情?第一次请求执行的流程是什么?SpringSecurity中的认证流程是怎么样的?1.1 系统启动 当我们的Web服务启动的时候,…

聊一聊vue如何实现角色权限的控制的

大家好&#xff0c;我是G探险者。 关于角色与权限控制&#xff0c;通常是分为两大类&#xff1a;一种是菜单权限&#xff1b;一种是操作权限。 菜单权限是指&#xff0c;每个角色对应着可以看到哪些菜单&#xff0c;至于每个菜单里面的每个按钮&#xff0c;比如增删改查等等这类…

HTML之JavaScript DOM操作元素(2)

HTML之JavaScript DOM操作元素&#xff08;2&#xff09; 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…

解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

一、问题描述 当我们的华硕主板电脑开机后&#xff0c;发现电脑无法正常进入Windows系统界面&#xff0c;直接显示PXE网络网络信息&#xff1b;且知道我们进入到BIOS界面也无法找到选择系统盘&#xff0c;界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…

音视频封装格式:多媒体世界的“容器”与“桥梁”

一、音视频封装格式的核心概念 音视频封装格式(容器)是一种将编码后的视频、音频、字幕等数据按规则整合的文件格式,其本质是多媒体数据容器,核心作用包含: 同步多轨道数据:通过时间戳(PTS/DTS)实现音画同步。组织数据流:统一管理视频流、音频流、字幕流等,并存储元…

Jenkins 配置 Credentials 凭证

Jenkins 配置 Credentials 凭证 一、创建凭证 Dashboard -> Manage Jenkins -> Manage Credentials 在 Domain 列随便点击一个 (global) 二、添加 凭证 点击左侧 Add Credentials 四、填写凭证 Kind&#xff1a;凭证类型 Username with password&#xff1a; 配置 用…