2012-02-29 76 views
16

我有一个查询ajax响应,然后用于设置数组变量。 有没有办法使用'For Loop'来改变#name,这样我就不必写出一行代码来设置每个数组元素。javascript/jQuery - For Loop

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

所以 '#event00' 可以被用在for循环更改为 '#event01' 等

+0

删除额外的零'0'。它会帮助你很多,相信..我会把00和0都算在一起。 – Relic 2012-02-29 20:51:26

+0

什么最终为你工作? – Greg 2012-03-01 18:23:35

回答

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(); 
}); 
+2

'.map()'更好。 – 2012-02-29 20:39:07

+0

@MДΓΓБДLL罗杰,我会补充一点。 – Bot 2012-02-29 20:40:49

+0

这与问题中的代码有什么关系,这是_setting_数组值?在线上调用'.html()'本身并不会做任何事情...... – nnnnnn 2012-02-29 20:52:42

34

使用普通的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()); 
} 
+0

完全同意Greg!原生函数总是比任何帮助对手更快。 – 2012-12-14 16:21:42

6

这样的事情呢?

var arr = []; 

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

[attr^=selector]选择匹配其上attr属性与给定的字符串,“事件”后,不关心数字这样开始元素。