javascript获取相同属性节点首选document.queryselectorall()配合属性选择器,支持存在、相等、包含、开头/结尾等多种匹配;次选getelementsbytagname等结合filter筛选;需区分html属性与dom特性,现代浏览器兼容性良好。

JavaScript 获取页面中所有具有相同属性的节点,主要用 document.querySelectorAll() 配合属性选择器,这是最直接、兼容性好且语义清晰的方式。
用 querySelectorAll + 属性选择器
属性选择器支持多种匹配模式,例如存在某属性、属性值相等、包含某子串、以某值开头/结尾等。只要写出对应的选择器,就能一次性获取全部匹配节点。
- 获取所有带
data-type属性的元素:document.querySelectorAll("[data-type]") - 获取
data-role="nav"的所有元素:document.querySelectorAll("[data-role='nav']") - 获取
class属性包含"btn"的元素:document.querySelectorAll("[class~='btn']")(注意是空格分隔的单词匹配) - 获取
id以"section"开头的元素:document.querySelectorAll("[id^='section']")
用 getElementsByTagName 或 getElementsByClassName 配合属性过滤
如果目标属性不是标准分类(如 class、name),但你想先缩小范围再筛选,可以结合遍历和 .hasAttribute() 或 .getAttribute() 判断。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 获取所有
div中带有data-status属性的节点:Array.from(document.getElementsByTagName('div')).filter(el => el.hasAttribute('data-status')) - 获取所有元素中
aria-label值为"close"的节点:Array.from(document.querySelectorAll('*')).filter(el => el.getAttribute('aria-label') === 'close')
注意点:区分「属性」和「特性」
HTML 中写的 disabled、checked 等布尔属性,在 DOM 中可能表现为特性(property)而非属性(attribute)。比如 el.disabled 是布尔值,而 el.getAttribute('disabled') 返回 "disabled" 或 null。查询时优先用属性选择器;运行时判断状态建议用特性(property)。
- 用选择器查是否写了该属性:
[disabled]—— 匹配 HTML 中显式写了disabled的元素 - 用 JS 判断当前是否禁用:
el.disabled === true—— 反映实际交互状态
兼容性与替代方案
现代浏览器都支持 querySelectorAll。若需支持 IE7+,属性选择器基本可用;IE6 不支持,此时只能手动遍历 document.all 或 getElementsByTagName('*') 并逐个检查属性。
- IE6 兼容写法(不推荐,仅作了解):
var all = document.getElementsByTagName('*');<br>var result = [];<br>for (var i = 0; i if (all[i].getAttribute('data-id') !== null) result.push(all[i]);<br>}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










