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

JavaScript:根据ID包含的短语选择元素并设置属性

批量设置ID含'_ro'的字段为只读

当然可以!完全不用重复写那一堆冗余的getElementById代码,这里有几种简洁高效的方法帮你一次性搞定:

方法1:使用CSS属性选择器 + querySelectorAll

这是最直接通用的方式,利用CSS的属性结尾匹配选择器精准定位所有目标元素,再批量设置只读:

// 选中所有ID以"_ro"结尾的元素
const roFields = document.querySelectorAll('[id$="_ro"]');

// 遍历每个元素设置只读状态
roFields.forEach(field => {
  field.readOnly = true;
});

为什么这么写?

  • [id$="_ro"]是CSS属性选择器,其中$=表示“以指定字符串结尾”,完美匹配你命名为Field1_ro、Field2_ro这类格式的字段;
  • querySelectorAll会返回包含所有匹配元素的NodeList,我们可以直接用forEach遍历处理每个元素,不用手动写循环。

方法2:如果元素都在同一个表单里(可选优化)

如果这些字段都属于某个特定表单,也可以通过表单的元素集合来筛选处理:

// 假设你的表单ID是"targetForm"
const form = document.getElementById('targetForm');
// 把表单元素转为数组后,筛选出ID以"_ro"结尾的元素
const roFields = Array.from(form.elements).filter(el => el.id.endsWith('_ro'));

roFields.forEach(field => {
  field.readOnly = true;
});

额外小提示

如果担心页面中可能存在未加载完成的元素,或者想更严谨一点,可以在设置前加个简单判断(不过querySelectorAll返回的空NodeList执行forEach也不会报错,所以一般不需要):

roFields.forEach(field => {
  if (field) {
    field.readOnly = true;
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:27:42