75

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

Example : createdOnid0xfff5db30

我想使用 JavaScript 找到这些变量并将其存储在一个变量中。我试过了

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

但这似乎不起作用。

4

5 回答 5

128

使用 jQuery,您可以使用attr 以选择器开头:

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

使用现代浏览器,您可以使用以 selector 开头的 CSS3 属性值以及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]);
于 2012-04-11T18:20:21.463 回答
17

您应该刚刚使用了简单的CSS 选择器JavaScript'.querySelectorAll()方法。

在你的情况下:

var dates = document.querySelectorAll('[id^="createdOnId"]');
于 2018-10-11T11:35:59.293 回答
7

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

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;
    }
}
于 2012-04-11T18:27:10.110 回答
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')
于 2012-04-11T20:38:43.673 回答
0

尝试以下操作:

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);
    }
}
于 2014-01-13T14:29:21.170 回答