2017-06-19 51 views
1

我爲環以下,想詢問是否有一種方法來簡化它:的JavaScript簡化環路

//data contains an array 
var i = 0; 
if(data.length >= 1) { 
    i = 1; 
} 
for (i; i <= data.length; i++) { 
    $('#img-thumb-id' + i).attr('src', data[i-1]); 
} 
+0

你可以用'$ .each'。並始終從零開始循環索引。 –

+1

如果data.length == 0,我是否理解你想讓它顯示一次?它似乎並沒有在那種情況下工作.. – Adder

+0

@Adder我認爲這是一個嘗試還檢查數據是否爲空 –

回答

2
if(typeof data!=="undefined" && data && data.length>0) { 
    for (var i=0; i < data.length; i++) { 
     $('#img-thumb-id' + (i+1)).attr('src', data[i]); 
    } 
} 
+1

如果(data && data.length)等於您的條件 –

+0

@Jonasw請檢查此示例,它不相等https://jsfiddle.net/ftr46syd/1/ –

+0

@Jonasw'if(typeof data!==「undefined」&& data && data.length)'''typeof data!== undefined「&& data && data.length> 0'表現更好。 –

4

我看到的jQuery用在這裏,所以你可以使用$.each

$.each(data, function(i, item){ 

    var iteration = +i+1; 
    $('#img-thumb-id' + iteration).attr('src', item); 

}); 

,如果你想使用香草的JavaScript(jQuery的沒有在所有)

for (var i; i < data.length; i++) { 
    var iteration = +i+1; 
    document.getElementById('img-thumb-id'+iteration).src = data[i]; 
} 

或者你可以使用:

for (var i in data) { 
    document.getElementById('img-thumb-id'+(+i+1)).src = data[i]; 
} 
+1

如果你想提供一個解決方案香草我會建議你更換'$( '#IMG-拇指-ID' +迭代)'和'的document.getElementById( 'IMG-拇指-ID' +迭代)'我知道OP正在使用jQuery選擇器,但對於未來的訪問者來說,它可能會引起誤解或混淆,因爲他們只會期待vanilla。 – NewToJS

+0

我認爲第三個片段woupd也會迭代* length * ... –

-1

Use simple foreach loop in JavaScript

//for eg. data array may be 
var data = [1,2,3,4]; 
data.forEach(function(item, index){ 
$('#img-thumb-id' + (index+1)).attr('src', item); 
}); 
+2

迭代未定義。 –

+0

感謝,對於不確定的指標是用來 –

+0

@downvoter請刪除您downvote,週二的答案是現在有效 –

1

循環是好的,但我不明白爲什麼你不只是做:

if(data !== null){ 
    for (var i = 0; i < data.length; i++) { 
       $('#img-thumb-id' + (i + 1)).attr('src', data[i]); 
      } 
} 

你不需要在你的問題中做第一塊代碼。對於閱讀代碼的人來說,如果你只是從0開始並繼續到object.length,那麼對標準的for循環來說更加清楚。

1

你也可以試試這個:

data.forEach(function(item, index){ 
    $('#img-thumb-id' + (index+1)).attr('src', item); 
}); 
+0

小心'「#IMG-拇指-ID」 +指數+ 1' ......不會產生什麼你預計 – charlietfl

+0

謝謝@charlietfl在括號內放置索引+ 1 –