如何使用属性选择器精准定位 DOM 元素

千杰君_8897

千杰君_8897

2026-10-15

668人浏览

原创

如何使用属性选择器精准定位 DOM 元素

本文介绍在 ID 和类名无法唯一标识元素时,如何通过 HTML 自定义属性(如 data-*)配合 CSS 属性选择器,高效、语义化地选取特定 DOM 节点。

本文介绍在 id 和类名无法唯一标识元素时,如何通过 html 自定义属性(如 `data-*`)配合 css 属性选择器,高效、语义化地选取特定 dom 节点。

在实际前端开发中,常遇到多个元素共享同一类名(如 class="main")、又无唯一 ID 的场景。此时若想精确获取“Table”单元格的文本内容,仅靠 document.getElementsByClassName('main') 或 document.querySelectorAll('.main') 会返回 NodeList,还需遍历判断——既冗余又低效。更优雅的方式是直接利用元素上已有的语义化属性进行精准匹配。

HTML 中的 data-* 属性专为存储自定义数据而设计,完全符合规范且具备良好可读性。结合 CSS 属性选择器,JavaScript 可通过 document.querySelector() 或 document.querySelectorAll() 直接定位目标元素:

// ✅ 精准选取 data 属性值为 "table" 的 <td> 元素
const tableCell = document.querySelector('[data="table"]');
console.log(tableCell.textContent); // 输出: "Table"

// ✅ 同样适用于其他值
console.log(document.querySelector('[data="chair"]').textContent); // "Chair"
console.log(document.querySelector('[data="desk"]').textContent);  // "Desk"<blockquote>
<p>? <strong>注意</strong>:  </p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/ai/2213" title="知了追踪"><img
														src="https://img.php.cn/upload/ai_manual/000/000/000/175679995357938.png" alt="知了追踪" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/ai/2213" title="知了追踪" class="overflowclass">知了追踪</a>
													<p class="overflowclass">一款AI开发辅助工具,主要用于AI智能信息助手,智能追踪你的兴趣资讯,适合需要提升相关任务效率的用户。</p>
												</div>
												<a rel="nofollow" href="/ai/2213" title="知了追踪" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div>
<ul>
<li>属性选择器语法为 <code>[attr="value"]</code>,需用方括号包裹,属性名与值之间用等号连接,值必须加引号(单/双均可);  </li>
<li>
<code>querySelector()</code> 返回第一个匹配项(推荐用于唯一目标),<code>querySelectorAll('[data]')</code> 则返回所有含 <code>data</code> 属性的元素;  </li>
<li>若 <code>data</code> 属性值含空格、特殊字符或大小写敏感,请确保字符串完全一致;建议优先使用 <code>data-*</code> 标准命名(如 <code>data-item="table"</code>),增强可维护性与语义性。</li>
</ul>
</blockquote>
<p>此外,该方法不仅限于 <code>data</code> 属性,还可用于 <code>name</code>、<code>type</code>、<code>title</code> 等任意原生或自定义属性。例如:  </p>
<pre class="brush:php;toolbar:false;">document.querySelector('input[name="username"]');  
document.querySelector('button[type="submit"]');  

综上,善用属性选择器是脱离“类名污染”与“ID 冗余”的关键实践,它让 DOM 操作更简洁、更具表现力,也更贴近现代 Web 开发中“关注点分离”与“语义化标记”的设计理念。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

属性选择器

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

2024.08.14

6501

7

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

2026.10.14

0

13

二狗PPT大纲编辑实操指南
二狗PPT大纲编辑实操指南

本专题聚焦二狗PPT结构化大纲的生成和修改,讲解标题、正文、目录、页数与页面顺序的调整方法,提升汇报逻辑和内容完整性。

2026.10.14

0

15

二狗PPT文档转PPT全教程
二狗PPT文档转PPT全教程

本专题讲解二狗PPT解析Word、PDF、Excel和PPT资料的方法,涵盖文件上传、内容提取、大纲整理、异常处理与转换后校对。

2026.10.14

0

13

讯飞绘文全功能使用教程
讯飞绘文全功能使用教程

本专题系统整理讯飞绘文官网入口、注册登录、工作台及内容创作流程,帮助用户熟悉常用功能,快速完成首篇图文内容。

2026.10.14

0

14

讯飞绘文AI写作与文案生成合集
讯飞绘文AI写作与文案生成合集

本专题聚焦讯飞绘文AI写作、提纲生成、文章改写和文案润色,覆盖从主题输入到成稿优化的关键操作与实用技巧。

2026.10.14

0

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习