我设法得到所有文本.innerHTML
,代码应该匹配所有具有模式sens[number]
的ID:是否可以获得数字?有什么办法吗?请不要使用 jQuery,谢谢!
问问题
2153 次
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 回答