You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可直接在浏览器控制台运行的检测DOM重复ID的轻量ES6代码片段

浏览器控制台可直接运行的重复ID检测脚本

以下原生ES6代码无任何依赖,复制到浏览器控制台即可运行,会自动输出当前页面所有重复ID及对应元素,不会修改页面原有内容:

// 基础版重复ID检测脚本
const idCountMap = new Map();
// 收集所有带ID属性的元素
document.querySelectorAll('[id]').forEach(el => {
  const id = el.id;
  if (!idCountMap.has(id)) {
    idCountMap.set(id, []);
  }
  idCountMap.get(id).push(el);
});
// 过滤出出现次数大于1的重复ID
const duplicateIds = Array.from(idCountMap.entries()).filter(([_, elements]) => elements.length > 1);
// 格式化输出结果
if (duplicateIds.length === 0) {
  console.log('✅ 当前页面未检测到重复ID');
} else {
  console.warn(`⚠️ 检测到 ${duplicateIds.length} 个重复ID:`);
  duplicateIds.forEach(([id, elements]) => {
    console.log(`ID: "${id}", 出现次数: ${elements.length},对应元素:`, elements);
  });
  // 把重复ID数组返回,方便后续自定义处理
  return duplicateIds;
}

使用说明

  • 直接复制全部代码粘贴到浏览器DevTools的Console面板回车即可运行
  • 检测到的重复ID会以警告形式输出,点击打印的DOM元素即可直接在Elements面板跳转定位
  • 脚本仅在当前页面生效,刷新页面后需要重新运行

如果需要直观看到所有重复ID对应的元素位置,可以使用带高亮的增强版本:

// 增强版:带重复元素高亮的检测脚本
const idCountMap = new Map();
document.querySelectorAll('[id]').forEach(el => {
  const id = el.id;
  if (!idCountMap.has(id)) idCountMap.set(id, []);
  idCountMap.get(id).push(el);
});
const duplicateIds = Array.from(idCountMap.entries()).filter(([_, els]) => els.length > 1);
if (duplicateIds.length === 0) {
  console.log('✅ 当前页面未检测到重复ID');
} else {
  console.warn(`⚠️ 检测到 ${duplicateIds.length} 个重复ID:`);
  duplicateIds.forEach(([id, els]) => {
    console.log(`ID: "${id}", 出现次数: ${els.length},对应元素:`, els);
    // 给重复元素添加红色外边框高亮
    els.forEach(el => el.style.outline = '2px solid #ff0000');
  });
  return duplicateIds;
}
// 运行下面的代码即可清除所有高亮样式:
// document.querySelectorAll('[style*="outline: 2px solid #ff0000"]').forEach(el => el.style.outline = '');

内容的提问来源于stack exchange,提问作者Anomaly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:15:02