6

我有一个页面,每次都会更改输入字段的 ID。因此,例如,如果我现在访问该页面,则 ID 可以是"stack_15_overflow",下次它可以是"stack_293_overflow"

我想为 使用通配符值getElementById,例如"stack_ * _overflow"*匹配任何内容),以获取与以某些特定文本开头和结尾的任何输入字段相关的值,无论介于两者之间的文本是什么。

代码:

function HelloId(string){
    var name=string
    document.getElementById('stack_*_overflow').value=name;
}
4

4 回答 4

5
var elements = document.querySelectorAll('[id^="stack_"][id$="_overflow"]');
于 2013-08-26T17:59:23.603 回答
5

使用 jQueryattribute starts withattribute ends with选择器:

$("[id^='stack'][id$=overflow]");

请注意,这些选择器很昂贵,指定元素的类型可以提高性能:

$('element').filter("[id^='stack'][id$=overflow]");
于 2013-08-26T17:59:36.160 回答
2

您无法通过使用getElementById. 更好的解决方案是querySelectoror querySelectorAll,您可以在其中获得对 CSS 选择器的全面支持。

参考 MDN

您将需要以下 2 个属性选择器:

获取以特定字符串开头的元素

document.querySelector('[id^="stack_"]');

获取包含特定字符串的元素

document.querySelector('[id*="stack_"]');

获取以特定字符串结尾的元素

document.querySelector('[id$="_overflow"]');

通过组合结束和开始选择器,您可以获得以下结果并能够达到您想要的结果:

document.querySelector('[id^="stack_"][id$="_overflow"]');

快乐编码!

于 2013-08-26T18:04:03.243 回答
0

代码:

$("body:regex(id, stack_[0-9]+_overflow)");

使用这个插件

于 2013-08-26T17:59:10.540 回答