Javascript 正则表达式getElementById
很长一段时间以来,我第一次需要使用纯Javascript,并且已经习惯了jQuery的舒适床垫,所有重要的东西都离我而去了 我需要在正则表达式上选择一组div。所以我有这样的东西Javascript 正则表达式getElementById,javascript,regex,foreach,getelementbyid,Javascript,Regex,Foreach,Getelementbyid,很长一段时间以来,我第一次需要使用纯Javascript,并且已经习惯了jQuery的舒适床垫,所有重要的东西都离我而去了 我需要在正则表达式上选择一组div。所以我有这样的东西 <div id="id_123456_7890123"> .. </div> <div id="id_123456_1120092"> .. </div> <div id="id_555222_1200192"> .. </div> <div
<div id="id_123456_7890123"> .. </div>
<div id="id_123456_1120092"> .. </div>
<div id="id_555222_1200192"> .. </div>
<div id="id_123456_9882311"> .. </div>
。。
..
..
..
我需要创建一个循环,该循环遍历所有div,其id以id\u 123456\u
开头。我该怎么做呢
我以前使用过jQuery和
:regex
过滤器插件,但现在看来,在纯javascript重写中似乎没有什么可以补救的地方。在纯javascript中,您可以进行这种通用搜索,这种搜索应该适用于所有浏览器:
var divs = document.getElementsByTagName("div"), item;
for (var i = 0, len = divs.length; i < len; i++) {
item = divs[i];
if (item.id && item.id.indexOf("id_123456_") == 0) {
// item.id starts with id_123456_
}
}
var divs=document.getElementsByTagName(“div”),项目;
对于(变量i=0,len=divs.length;i工作示例:在纯javascript中,您可以执行此通用搜索,该搜索应适用于所有浏览器:
var divs = document.getElementsByTagName("div"), item;
for (var i = 0, len = divs.length; i < len; i++) {
item = divs[i];
if (item.id && item.id.indexOf("id_123456_") == 0) {
// item.id starts with id_123456_
}
}
var divs=document.getElementsByTagName(“div”),项目;
对于(变量i=0,len=divs.length;i工作示例:它通过递归遍历整个DOM来工作 它可能不是最有效的,但应该适用于所有浏览器
function find_by_id(el, re, s) {
s = s || [];
if (el.tagName === 'DIV' && re.exec(el.id) !== null) {
s.push(el);
}
var c = el.firstChild;
while (c) {
find_by_id(c, re, s);
c = c.nextSibling;
}
return s;
}
var d = find_by_id(document.body, /^id_123456_/);
请参见这是通过递归遍历整个DOM来实现的 它可能不是最有效的,但应该适用于所有浏览器
function find_by_id(el, re, s) {
s = s || [];
if (el.tagName === 'DIV' && re.exec(el.id) !== null) {
s.push(el);
}
var c = el.firstChild;
while (c) {
find_by_id(c, re, s);
c = c.nextSibling;
}
return s;
}
var d = find_by_id(document.body, /^id_123456_/);
请参见以下内容:
HTML:
嘿
你好
啜饮
繁荣
Javascript:
divs = document.getElementsByTagName("div");
divsWith123456 = new Array();
for (var i = 0;i < divs.length;i++) {
if (divs[i].id.match("id_123456") != null) {
divsWith123456.push(divs[i]);
document.getElementById("result").innerHTML += "Found: divs[" + i + "] id contains id_123456, its content is \"" + divs[i].innerHTML + "\"<br/><br/>";
}
}
divs=document.getElementsByTagName(“div”);
divsWith123456=新数组();
对于(变量i=0;i ;
}
}
给您:
HTML:
嘿
你好
啜饮
繁荣
Javascript:
divs = document.getElementsByTagName("div");
divsWith123456 = new Array();
for (var i = 0;i < divs.length;i++) {
if (divs[i].id.match("id_123456") != null) {
divsWith123456.push(divs[i]);
document.getElementById("result").innerHTML += "Found: divs[" + i + "] id contains id_123456, its content is \"" + divs[i].innerHTML + "\"<br/><br/>";
}
}
divs=document.getElementsByTagName(“div”);
divsWith123456=新数组();
对于(变量i=0;i ;
}
}
HTML DOM querySelectorAll()方法将在此处工作
document.querySelectorAll('[id^="id_"]');
借用自HTML DOM querySelectorAll()方法将在此处工作
document.querySelectorAll('[id^="id_"]');
从中借用,对于旧的Internet Explorer版本,它将不起作用,但请查看最新浏览器中可用的
queryselectoral()
方法。我正在使用“油脂/篡改猴子”,因此IE完全不相关,感觉很好。谢谢你的提示,我会检查一下,而且值得注意的是,你最好给那些元素一个“123456”类。当然,但是因为它是一个外部站点的用户脚本,DOM就不在我的掌握之中了。这也是为什么我更喜欢使用jQuery,但不能使用的原因。我检查了querySelectorAll()
,它看起来确实列出了很多元素,但我不明白您是如何将regexp放入itAh的好吧,我明白了。嗯,你不能使用正则表达式,但我认为新浏览器允许queryselectoral([id^=id\u 123456]”)
对于旧的Internet Explorer版本,它将不起作用,但请查看最新浏览器中可用的queryselectoral()
方法。我正在使用的是油脂/篡改猴子,因此IE完全不相关,感觉不错。谢谢你的提示,我会检查一下,而且值得注意的是,你最好给那些元素一个“123456”类。当然,但是因为它是一个外部站点的用户脚本,DOM就不在我的掌握之中了。这也是为什么我更喜欢使用jQuery,但不能使用的原因。我检查了querySelectorAll()
,它看起来确实列出了很多元素,但我不明白您是如何将regexp放入itAh的好吧,我明白了。您不能使用正则表达式,但我认为新的浏览器允许queryselectoral([id^=id\u 123456])