查找id以公共字符串开头的所有元素

时间:2012-04-11 18:18:51

标签: javascript regex

我有一个XSL创建了多个元素,其id为“createdOn”加上$ unique-id

Example : createdOnid0xfff5db30

我想使用JavaScript在变量中找到并存储它们。我试过了

var dates = document.getElementsById(/createdOn/);

但这似乎不起作用。

5 个答案:

答案 0 :(得分:66)

使用jQuery,您可以使用attr starts with选择器:

var dates = $('*[id^="createdOnid"]');

使用现代浏览器,您可以使用CSS3 attribute value begins with选择器和querySelectorAll

var dates = document.querySelectorAll('*[id^="createdOnID"]');

但是对于旧浏览器的回退(并且没有jQuery),您需要:

var dateRE = /^createdOnid/;
var dates=[],els=document.getElementsByTagName('*');
for (var i=els.length;i--;) if (dateRE.test(els[i].id]) dates.push(els[i]);

答案 1 :(得分:7)

因为你没有标记jQuery,并且你可能不需要它,我的建议是在创建它们时为这些元素添加一个类。然后使用大多数浏览器中内置的getElementsByClassName()函数。对于IE,您需要添加this

之类的内容
if (typeof document.getElementsByClassName!='function') {
    document.getElementsByClassName = function() {
        var elms = document.getElementsByTagName('*');
        var ei = new Array();
        for (i=0;i<elms.length;i++) {
            if (elms[i].getAttribute('class')) {
                ecl = elms[i].getAttribute('class').split(' ');
                for (j=0;j<ecl.length;j++) {
                    if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) {
                        ei.push(elms[i]);
                    }
                }
            } else if (elms[i].className) {
                ecl = elms[i].className.split(' ');
                for (j=0;j<ecl.length;j++) {
                    if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) {
                        ei.push(elms[i]);
                    }
                }
            }
        }
        return ei;
    }
}

答案 2 :(得分:2)

function idsLike(str){
    var nodes= document.body.getElementsByTagName('*'),
    L= nodes.length, A= [], temp;
    while(L){
        temp= nodes[--L].id || '';
        if(temp.indexOf(str)== 0) A.push(temp);
    }
    return A;
}

idsLike('createdOn')

答案 3 :(得分:2)

您应该刚将简单的CSS selectorJavaScript的{​​{3}}方法一起使用。

在您的情况下:

var dates = document.querySelectorAll('[id^="createdOnid"]');

答案 4 :(得分:1)

尝试以下方法:

var values = new Array(valueKey_1);
var keys = new Array("nameKey_1");
var form = document.forms[0];
for (var i = 0; i < form.length; i++) {
    name = form.elements[i].name;
    var startName = name.toLowerCase().substring(0, 18);
    if (startName == 'startStringExample') {
    values.push(name.value);
    keys.push(name);
    }
}