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

如何在原生JS中选取包含相同关键词的多个ID元素?

原生JS选取带相同前缀ID元素的方法

要选取所有ID以指定前缀(比如img1、img2这类的img前缀)开头的元素,不用jQuery的话,有两种常用原生方案:

方案1:使用document.querySelectorAll结合属性选择器

这是最简洁的方式,利用CSS属性选择器匹配ID前缀:

// 选取所有ID以"img"开头的元素
const imgElements = document.querySelectorAll('[id^="img"]');
  • [id^="img"]表示ID属性值以"img"开头的元素;
  • 如果是要匹配ID包含指定关键词(不一定是前缀),可以用[id*="img"](*表示包含任意位置的关键词)。

方案2:遍历元素并手动判断ID

如果需要更灵活的判断逻辑,可以遍历页面元素并筛选:

const imgElements = [];
// 获取页面所有元素(也可以限定标签范围,比如只找img标签:document.getElementsByTagName('img'))
const allElements = document.querySelectorAll('*');

allElements.forEach(element => {
  // 判断ID是否以"img"开头
  if (element.id && element.id.startsWith('img')) {
    imgElements.push(element);
  }
});

这种方式适合需要自定义判断规则的场景,比如ID前缀是动态生成的情况。

结合你的代码修改示例

你的原始代码只针对单个ID元素操作,改成批量处理的话可以这样写:

// 提前保存所有目标元素的原始宽度
const imgElements = document.querySelectorAll('[id^="img"]');
const originalWidths = [];

// 初始化保存每个元素的原始宽度(兼容内联样式和CSS类设置的宽度)
imgElements.forEach((el, index) => {
  originalWidths[index] = el.style.width || getComputedStyle(el).width;
});

document.getElementById("resizeButton").addEventListener("click", function () {
  changedivclass();
  imgElements.forEach((el, index) => {
    if (el.style.width === "100%") {
      el.style.width = originalWidths[index]; 
    } else {
      el.style.width = "100%"; 
    }
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:22:16