短故事我想從圖像數組中每4秒更改一次圖像。我需要在這裏添加什麼來實現這一點。Js:循環通過陣列indeffinetly
var list = ["img1", "img2", "img3"];
function ChangeBackground() {
document.getElementById('background').src = "images/"+list[i];
}
window.setInterval(ChangeBackground(), 4000);
短故事我想從圖像數組中每4秒更改一次圖像。我需要在這裏添加什麼來實現這一點。Js:循環通過陣列indeffinetly
var list = ["img1", "img2", "img3"];
function ChangeBackground() {
document.getElementById('background').src = "images/"+list[i];
}
window.setInterval(ChangeBackground(), 4000);
您可以在索引上使用閉包。
function changeBackground() {
var i = 0,
imgURL = 'http://lorempixel.com/250/200/abstract/';
return function() {
document.getElementById('background').src = imgURL + list[i++];
i %= list.length; // prevent looping over the length
};
}
var list = [3, 1, 4, 7];
setInterval(changeBackground(), 4000);
// ^^ with brackets for returning function
<img id="background">
嘗試:
var list = ["img1", "img2", "img3"];
var i=0;
function ChangeBackground() {
i++;
if(i>list.length-1){
i=0;
}
document.getElementById('background').src = "images/"+list[i];
}
window.setInterval(ChangeBackground(), 4000);
注意這並污染命名空間。
var list = ["img1", "img2", "img3"],
i = 0; // declare and initialize i outside of the function
function ChangeBackground() {
document.getElementById('background').src = "images/" + list[i];
i = (i + 1) % list.length; // increment i after each call to this function (make sure i come back to 0 if it exceeds the length of the array using the modulo % operator)
}
window.setInterval(ChangeBackground, 4000); // pass a reference to the function not its return value (notice there is no parens after the function name)
謝謝!這回答了我想知道的一切^^ – 888666111