2012-02-29 110 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屬性與給定的字符串,「事件」後,不關心數字這樣開始元素。