应使用 document.queryselectorall("[id]") 获取所有带 id 属性的元素,因 getelementbyid 仅支持按已知 id 值查询单个元素;该方法兼容 ie8+,返回 nodelist,可遍历或转数组,且能匹配空 id、重复 id 等情况。

可以用 document.querySelectorAll("[id]") 一次性获取所有带有 id 属性的元素节点。
为什么不用 getElementById?
getElementById 只能查单个、已知 ID 值的元素,且返回的是单个元素(或 null),不适用于“查所有带 ID 的节点”这个需求。
推荐方法:用 querySelectorAll
这是最直接、兼容性好(IE8+)、语义清晰的方式:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
document.querySelectorAll("[id]")匹配所有拥有id属性的元素(无论值是否为空或重复) - 返回的是
NodeList,可遍历、可转数组:Array.from(document.querySelectorAll("[id]")) - 支持进一步筛选,比如只取非空 ID:
document.querySelectorAll("[id]:not([id=''])")
注意 ID 的合法性与常见情况
ID 属性在 HTML 中本应唯一且非空,但实际页面中可能存在:
- 空 ID:
<div id=""> —— 仍会被 <code>[id]匹配到 - 重复 ID:
<p id="test"></p> <span id="test"></span>—— 两者都会被选中 - ID 含特殊字符(如点、括号):需用转义或引号,但
[id]选择器本身不关心内容,所以无需额外处理
补充:如果只想检查是否存在 ID 属性(不取值)
上述 [id] 已足够。若后续需要读取每个节点的 ID 值,可这样操作:
document.querySelectorAll("[id]").forEach(el => {
console.log(el.id); // 或 el.getAttribute("id")
});










