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

HTML前端开发:JavaScript 获取元素方法详解

        作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列:

一、getElementBy... 系列

        传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。

方法语法返回类型特点示例
getElementById()document.getElementById('id')单个元素ID 必须唯一,性能最优const header = document.getElementById('header')
getElementsByClassName()document.getElementsByClassName('class')HTMLCollection (类数组)通过 class 获取,返回集合const items = document.getElementsByClassName('item')[0]
getElementsByTagName()document.getElementsByTagName('div')HTMLCollection (类数组)通过标签名获取const divs = document.getElementsByTagName('div')
getElementsByName()document.getElementsByName('username')NodeList (类数组)通过 name 属性获取(常用于表单)const inputs = document.getElementsByName('email')

⚠️ 注意事项:

  1. 类数组需用索引访问单个元素:elements[0]

  2. 动态集合:删除/新增元素会影响结果

  3. ID 方法最快速,优先使用

 

二、querySelector 系列

        现代方法,支持 CSS 选择器,返回静态集合(创建时的元素快照)。

方法语法返回类型特点示例
querySelector()document.querySelector('selector')单个元素返回匹配的第一个元素const btn = document.querySelector('.btn-primary')
querySelectorAll()document.querySelectorAll('selector')NodeList (静态集合)返回所有匹配元素const cards = document.querySelectorAll('.card')

✅ 优势:

  1. 支持复杂选择器(如:div > .active[data-id="1"]

  2. 静态集合不受 DOM 变化影响

  3. 链式调用:element.querySelector()

 

三、获取元素后的内容操作

        获取元素后常用属性操作内容:

属性作用适用场景
.innerHTML获取/设置元素内的 HTML 内容(含标签)动态插入 HTML 片段
.innerText获取/设置元素的 文本内容(忽略标签)纯文本操作
.value获取/设置表单元素的 input/select/textarea
// 示例:修改元素内容
const box = document.querySelector('#box');
box.innerHTML = '<strong>新内容</strong>';  // 解析 HTMLconst input = document.querySelector('input');
console.log(input.value);  // 获取输入框的值

 

四、如何选择方法?
场景推荐方法
通过 ID 获取getElementById()
简单选择器querySelector()
复杂 CSS 选择器querySelectorAll()
实时更新的集合getElementsByClassName/TagName()
表单 name 属性getElementsByName()

💡 专业建议

  1. 优先使用 querySelector 系列:更灵活且符合 CSS 习惯

  2. 循环动态集合时注意性能(可转为数组:Array.from(elements)

  3. 避免过度查询:缓存元素 const nav = document.querySelector('nav')

http://www.xdnf.cn/news/13035.html

相关文章:

  • 5. TypeScript 类型缩小
  • 【JVM】Java虚拟机(三)——类加载与类加载器
  • synchronized 关键字​​ 和 ​​Lock 接口(ReentrantLock)​​ 的详细说明及示例,涵盖核心概念、使用场景、代码实现及两者对比
  • 【Elasticsearch】映射:fielddata 详解
  • 【C++特殊工具与技术】优化内存分配(三):operator new函数和opertor delete函数
  • Linux多线程---线程池实现
  • STM32CubeMX-H7-20-ESP8266通信(下)-双单片机各控制一个ESP8266实现通信
  • LLMs 系列科普文(13)
  • 【Java实战】反射操作百倍性能优化
  • MyBatis原理剖析(一)
  • 人工智能学习08-类与对象
  • Python BeautifulSoup解析HTML获取图片URL并下载到本地
  • word中表格线粗细调整
  • 基于单片机的病房呼叫系统(源码+仿真)
  • Linux知识回顾总结----进程状态
  • 什么是ANSYS ACT? ACT又可以分为哪几类?
  • yaklang 中的各种 fuzztag 标签及其用法
  • 跟我学c++中级篇——多线程中的文件处理
  • Java网络编程:构建现代分布式应用的核心技术
  • day50 随机函数与广播机制
  • 基于Java Web的校园失物招领平台设计与实现
  • Redis——主从哨兵配置
  • ckeditor5的研究 (9):写一个自定义插件,包括自定义的toolbar图标、插入当前时间,并复用 CKEditor5 内置的 UI 组件
  • 2025年U盘数据恢复软件推荐:找回丢失文件的得力助手
  • 大数据赋能行业智能化升级:从数据价值到战略落地的全景透视
  • 网络渗透测试中的信息收集与网站目录扫描实战详解
  • Linux --进程控制
  • DHCP / DHCPv6 原理 / 报文解析 / 配置示例
  • Maven入门(够用)
  • Secs/Gem第九讲(基于secs4net项目的ChatGpt介绍)