当前位置: 首页 > news >正文

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.dtcms.com/a/35344.html

相关文章:

  • 网络安全漏洞管理要求 网络安全产品漏洞
  • OC高级编程之GCD
  • C语言数据结构—二叉树的链式结构实现
  • 【ECMAScript6】
  • 【知识】PyTorch中不同优化器的特点和使用
  • Visual Whole-Body for Loco-Manipulation论文复现
  • hab 通信
  • 爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用
  • 另外一个用于测试内存屏障差异的 C 语言示例程序(自己测试)
  • springboot集成jackson-dataformat-xml实现发送XML请求和XML响应参数处理
  • docker离线安装记录
  • 人工智能基础知识笔记一:核函数
  • 使用 BFS 解决 最短路问题
  • springboot005学生心理咨询评估系统(源码+数据库+文档)
  • Xinference和ollama有什么区别
  • 【CSS】HTML元素布局基础总结
  • 沁恒CH32V307RCT6烧写hex文件时报错“设置芯片型号失败”
  • IP---网络类型
  • 基于 MySQL 递归 CTE 实现表,父级id与子级id拼接
  • 零信任应用侧理性选择并期许未来
  • 捷 C++ 课程学习笔记:STL 应用与复杂度分析
  • 【react】基础教程
  • 【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作
  • 求解动态完全未知的连续时间非线性系统的优化控制的全局自适应动态规划算法
  • KubeSphere平台安装
  • 面试八股文--数据库基础知识总结(1)
  • 应无所住而生其心:心灵的自在与解脱
  • 深入理解IP子网掩码子网划分{作用} 以及 不同网段之间的ping的原理 以及子网掩码的区域划分
  • 中国的Cursor! 字节跳动推出Trae,开放Windows版(附资源),开发自己的网站,内置 GPT-4o 强大Al模型!
  • Flutter使用permission_handler请求通知权限不会弹出权限弹窗