JavaScript / jQuery - For循环

19

我有一个查询ajax响应,然后我使用它来设置数组变量。有没有办法使用“For Loop”更改为#name,这样我就不必编写一行代码来设置每个数组元素了。

array[0]=$('#event00',response).html();
array[1]=$('#event01',response).html();
array[2]=$('#event02',response).html();
array[3]=$('#event03',response).html();

因此,'#event00'可以在for循环中使用,以便改为'#event01'等


1
删除多余的零'0',这将对您有很大帮助,相信我。我会完全省略00和0计数。 - Eric Hodonsky
你最终采用了什么方案? - Greg
3个回答

46

使用普通的for循环,并格式化索引以在选择器中使用。

var array = [];
for (var i = 0; i < 4; i++) {
    var selector = '' + i;
    if (selector.length == 1)
        selector = '0' + selector;
    selector = '#event' + selector;
    array.push($(selector, response).html());
}

完全同意Greg!!本地函数总是比任何辅助函数更快。 - Ed DeGagne

8
这个怎么样?
var arr = [];

$('[id^=event]', response).each(function(){
    arr.push($(this).html());
});

[attr^=selector]选择器匹配属性以给定字符串开头的元素,这样您就不必关心“event”后面的数字。


2

.each() 可以帮助你。你可以参考 http://api.jquery.com/jQuery.each/ 或者 http://api.jquery.com/each/,或者你也可以使用 .map

var newArray = $(array).map(function(i) {
    return $('#event' + i, response).html();
});

编辑:由于建议不使用,我已删除添加前导0的操作。

如果你必须要使用它,请使用

var newArray = $(array).map(function(i) {
    var number = '' + i;
    if (number.length == 1) {
        number = '0' + number;
    }   
    return $('#event' + number, response).html();
});

@MДΓΓБДLL Roger,我会添加的。 - Bot
这与问题中设置数组值的代码有何关系?在单独一行调用 .html() 不会做任何事情... - nnnnnn
@nnnnnn 很好的发现,我忘记把它添加到数组中了。我已经将其删除并用 map 替换了。 - Bot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接