news 2026/8/8 23:14:20

JavaScript DOM 原生部分(一):获取DOM

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript DOM 原生部分(一):获取DOM

文章目录

  • 一.根据 ID 获取( getElementById )
  • 二.根据类名获取( getElementsByClassName )
  • 三.根据标签名获取( getElementsByTagName )
  • 四.根据选择器获取( querySelector / querySelectorAll )
    • 1.querySelector
    • 2.querySelectorAll
  • 五.获取表单元素( getElementsByName )
  • 六.获取特殊元素( 文档 / body / 头部 )
  • 注意事项
  • 总结

原生方法无需依赖任何库,是最基础且高效的方式,主要通过document对象提供的 API 实现.

一.根据 ID 获取( getElementById )

  • 作用: 通过元素的id属性获取唯一的 DOM 元素(因为id在文档中应唯一).
  • 语法:
    document.getElementById(id值)
  • 返回值: 匹配的 DOM 元素对象,若不存在则返回null.
// HTML: <div id="box">Hello</div>constbox=document.getElementById('box');console.log(box);// <div id="box">Hello</div>

二.根据类名获取( getElementsByClassName )

  • 作用: 通过元素的class属性获取所有匹配的元素集合(HTMLCollection,类数组对象).
  • 语法:
    document.getElementsByClassName(类名)
  • 返回值: 包含所有匹配元素的 HTMLCollection,若不存在则返回空集合.
// HTML: <div class="item">1</div><div class="item">2</div>constitems=document.getElementsByClassName('item');console.log(items);// HTMLCollection(2) [div.item, div.item]console.log(items[0]);// 取第一个元素: <div class="item">1</div>

三.根据标签名获取( getElementsByTagName )

  • 作用: 通过元素的标签名(如divpul)获取所有匹配的元素集合(HTMLCollection).
  • 语法:
    document.getElementsByTagName(标签名)
  • 返回值: 包含所有匹配元素的 HTMLCollection,若不存在则返回空集合.
// HTML: <p>文本1</p><p>文本2</p>constparas=document.getElementsByTagName('p');console.log(paras.length);// 2

四.根据选择器获取( querySelector / querySelectorAll )

这是最灵活的方式,支持 CSS 选择器语法,是现代开发中最常用的方法.

1.querySelector

  • 作用: 获取第一个匹配 CSS 选择器的 DOM 元素.
  • 语法:
    document.querySelector(选择器)
  • 返回值: 第一个匹配的元素对象,若不存在则返回null.
// HTML: <div class="item">1</div><div class="item">2</div>constfirstItem=document.querySelector('.item');// 类选择器constbox=document.querySelector('#box');// ID 选择器constp=document.querySelector('ul li: first-child');// 复杂 CSS 选择器

2.querySelectorAll

  • 作用: 获取所有匹配 CSS 选择器的元素集合(NodeList,类数组对象).
  • 语法:
    document.querySelectorAll(选择器)
  • 返回值: 包含所有匹配元素的 NodeList,若不存在则返回空集合.
// HTML: <div class="item">1</div><div class="item">2</div>constallItems=document.querySelectorAll('.item');console.log(allItems);// NodeList(2) [div.item, div.item]// 可通过 forEach 遍历(NodeList 支持 forEach,HTMLCollection 不支持)allItems.forEach((item)=>console.log(item));

五.获取表单元素( getElementsByName )

  • 作用: 通过元素的name属性获取元素(主要用于表单元素,如inputselect).
  • 语法:
    document.getElementsByName(name值)
  • 返回值: NodeList 集合.
// HTML: <input type="text" name="username">constusername=document.getElementsByName('username')[0];// 取第一个匹配元素

六.获取特殊元素( 文档 / body / 头部 )

// 获取 html 根元素consthtml=document.documentElement;// 获取 body 元素constbody=document.body;// 获取 head 元素consthead=document.head;

注意事项

  1. 获取时机: 必须等待 DOM 加载完成后再获取元素,否则可能返回null.

    • 解决方式:
      • 将脚本放在<body>底部;
      • 使用DOMContentLoaded事件:
        document.addEventListener('DOMContentLoaded',function(){// 在这里获取元素});
  2. 集合类型:

    • getElementsByClassName/getElementsByTagName返回HTMLCollection(动态集合,DOM 变化会实时更新);
    • querySelectorAll/getElementsByName返回NodeList(静态集合,DOM 变化不会更新);
    • 两者都是类数组对象,可通过Array.from()或扩展运算符转为真正的数组:
      constitems=document.querySelectorAll('.item');constitemsArr=Array.from(items);// 转为数组
  3. 性能:getElementById是最快的获取方式(因为 ID 唯一),其次是querySelector,复杂选择器的性能略低,但在现代浏览器中差异可忽略.

总结

  • 原生 JavaScript 中,querySelector/querySelectorAll因支持 CSS 选择器而最常用,灵活性最高;
  • 简单场景(如按 ID 获取)用getElementById更高效;
  • 框架中优先使用其提供的选择器语法,简化代码.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/8 11:57:23

微软确认:Windows 11 AI 智能体访问用户文件前会先请求许可

微软证实&#xff0c;在允许人工智能智能体访问存储于六个常用文件夹&#xff08;包括桌面、文档、下载、音乐、图片和视频&#xff09;的文件前&#xff0c;Windows 11 会先征求用户的同意。用户也可为每个智能体单独自定义文件访问权限。12 月 17 日消息&#xff0c;微软证实…

作者头像 李华
网站建设 2026/8/8 11:14:34

Shopee 验证码解决方案

ight Data 的验证码解决方案是 抓取浏览器 和 网络解锁器 的内置功能&#xff0c;为应对最复杂的验证码挑战提供完整解决方案。功能特点快速识别与解决&#xff1a;可高准确率且迅速地自动解决 Shopee 验证码。IP 轮换&#xff1a;利用自动重试和动态 IP 调整&#xff0c;防止被…

作者头像 李华
网站建设 2026/8/7 22:11:11

Python - 诊断和修复内存泄漏

内存泄漏是指程序错误地管理内存分配&#xff0c;导致可用内存减少&#xff0c;并可能导致程序变慢或崩溃。 在 Python 中&#xff0c;内存管理通常由解释器处理&#xff0c;但内存泄漏仍然可能发生&#xff0c;尤其是在长时间运行的应用中。在 Python 中诊断和修复内存泄漏需…

作者头像 李华
网站建设 2026/8/8 5:38:55

什么叫组团社,什么叫地接社

在旅游行业中&#xff0c;有两个重要的角色&#xff1a;组团社与地接社&#xff0c;它们分别承担着不同的职责。 组团社&#xff0c;也被称为国内旅游批发商&#xff0c;其主要功能是接受旅游团或海外旅行社的预订。 它们负责制定并下达接待计划&#xff0c;甚至可以提供全程陪…

作者头像 李华
网站建设 2026/8/7 3:36:38

8大关键技术点掌握YashanDB的使用技巧

如何优化查询速度是数据库系统设计和运维中的重要问题&#xff0c;影响着业务响应时间和系统吞吐能力。高效的数据存储、合理的索引设计、智能的执行计划生成以及高并发事务控制技术&#xff0c;均直接关系到查询性能表现。本文围绕YashanDB数据库系统&#xff0c;深入剖析其八…

作者头像 李华
网站建设 2026/8/8 23:00:00

Kubernetes Service 架构深度解析:从虚拟IP到流量的智能寻址

在Kubernetes中&#xff0c;Pod间的直接互联仅是服务通信的基础。要构建一个稳定、弹性且对消费端透明的服务网络&#xff0c;其核心在于Service抽象层。许多开发者对Service的理解仅停留在“一个虚拟IP”的层面&#xff0c;却未能洞悉其背后精妙的流量治理机制&#xff1a;请求…

作者头像 李华