Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式getElementById_Javascript_Regex_Foreach_Getelementbyid - Fatal编程技术网

Javascript 正则表达式getElementById

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

很长一段时间以来,我第一次需要使用纯Javascript,并且已经习惯了jQuery的舒适床垫,所有重要的东西都离我而去了

我需要在正则表达式上选择一组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])