-3

我设法得到所有文本.innerHTML,代码应该匹配所有具有模式sens[number]的ID:是否可以获得数字?有什么办法吗?请不要使用 jQuery,谢谢!

4

2 回答 2

3

前言

不要试图从innerHTML字符串中寻找元素。字符串很难解析,而 DOM 使得搜索具有特定属性的元素变得非常容易。照这样说:

通用解决方案

// grab all elements on the page and setup an array to store matches
var els = document.getElementByTagName('*').
    results = [];
// iterate over the elements
for (var i = 0; i < els.length; i++){
  // see if the element has an id and, if so, if it matches
  // the "sens[number]" pattern
  if (els[i].id && /sens\[\d+\]/.test(els[i].id)){
    // found a match, add it to results
    results.push(els[i]);
  }
}

现代解决方案

当然,您也可以使用querySelectorAll并查找[id^="sens["][id$="]"],但这在旧浏览器(IE < 8)上可能会出现问题。

var els = document.querySelectorAll('[id^="sens["][id$="]"]'),
    results = [];
for (var i = 0; i < els.length; i++){
  // all we've found are elements that start with "sens[" and
  // end with a "]". We still need to verify there's a number
  // between the brackets ([])
  if (/sens\[\d+\]/.test(els[i].id)){
    results.push(els[i]);
  }
}
于 2013-07-26T12:37:23.000 回答
2

如果您只是想获取具有相似 id 的元素

var elements = document.querySelectorAll('[id^="sens[number]"]');

如果 number 应该是动态的,^= 将匹配任何以 sens[number] 开头的 id

var elements = document.querySelectorAll('[id^=sens]');

抓取以 sens 开头的所有内容,或者您​​可以使用带有选择器的变量来获取带有数字的特定变量

var number = 1;
var elements = document.querySelectorAll('[id^=sens"['+number+']"]');
于 2013-07-26T12:36:13.887 回答