【问题标题】:Getting elements by a partial id string in javascript通过javascript中的部分id字符串获取元素
【发布时间】:2009-06-15 23:02:52
【问题描述】:

我有以下代码:

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

我现在需要添加一些逻辑来仅禁用具有“bib *”形式的 Id 的输入,其中 bib 可以是任何字符。我已经看到其他问题是用 jquery 完成的,但我不能只使用简单的 javascript。任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 更精确。 “围兜”可以是任何字符吗?你的意思是 * 可以是任何字符?所以 bibo 匹配但参考书目不匹配?
  • 你可以使用 CSS 样式属性选择器吗?我想 document.getElementsByTagName('[id^=bib]');会工作的。

标签: javascript


【解决方案1】:

这是非常基本的东西。

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

【讨论】:

  • 不是每次都循环遍历它们...将元素缓存在一个数组中,这样下一个循环会更快。
  • TJ,如果代码运行不止一次,并且匹配元素的数量相对较少,那就太好了。
【解决方案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;
        }
    }
}

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 对我来说,这总是返回一个没有元素的 HTMLElement 集合,尽管有很多以“围兜”开头的元素(或者我用这些字符替换的任何字符)
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 2013-03-30
    • 2011-12-10
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多