在JavaScript中通过部分id字符串获取元素

13

我有以下代码:

var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
inputs[i].disabled = bDisabled;
}

我现在需要添加一些逻辑,仅禁用表单中 Id 为 "bib*" 的输入框,其中 bib 可以是任何字符。我看到其他问题中使用 jQuery 可以实现此功能,但我只能使用简单的 JavaScript。谢谢帮助。

谢谢


2
更加精确一些。 "bib" 可以是任何字符吗?你的意思是 * 可以是任何字符吗?这样 bibo 就匹配了,但 bibliography 不匹配? - Stefan Mai
你能使用CSS样式属性选择器吗?我想document.getElementsByTagName('[id ^ = bib]');会起作用。 - Eytan
3个回答

17

这是相当基础的内容。

var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
  if(inputs[i].id.indexOf("bib") == 0)
    inputs[i].disabled = bDisabled;
}

不要每次都循环遍历它们...将元素缓存到数组中,这样下一次循环就会更快。 - TJR
1
如果代码需要运行多次,并且匹配元素数量相对较少,那么这将是很好的。 - Matthew Flaschen

2
function CheckDynamicValue(partialid, value) {

    var re = new RegExp(partialid, 'g');
    var elems = document.getElementsByTagName('*'), i = 0, el;
    while (el = elems[i++]) {
        if (el.id.match(re)) {
            el.disabled = value;
        }
    }
}

0

我自己没有尝试过,但是CSS样式属性选择器可以吗?

document.getElementsByTagName('[id^=bib]');

对我来说,这总是返回一个没有元素的 HTMLElement 集合,尽管有很多以“bib”开头的元素(或者无论我用什么字符替换它们)。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接