Javascript中for循环中的setInterval

时间:2012-01-09 06:13:28

标签: javascript jquery for-loop setinterval

下面的代码需要在for循环中放入一个setInterval。我基本上需要在for循环的下一次迭代之间暂停10秒。这是一个非常基本的脚本,在移动到下一个之前,在div中显示10秒的横幅。它现有的setInterval是我从其他网站上下载的代码,因为我用完了选项。有帮助吗?如果你不介意向我解释逻辑,以便我知道未来:)

$("document").ready(function() {

// bannerChange
function bannerChange(banner,div,milliseconds) {
    var length = banner.length;
    for(i=0;i<length;i++) {
        (function(i) {
            setInterval(function() {
                var url = banners[i].url;
                var img = banners[i].image;
                $("#"+div).html("<a href='"+url+"' target='_Blank'><img src='www/images/banners/"+img+"' /></a>");
            },milliseconds)
        })(i);
    }
}

function showBanner(bannerName, bannerDiv, milliseconds) {
    var url = "www/scripts/ajax/getBanners.php";
    $.post(url, {name: bannerName}, function(data) {
        if(data.response == true) {
            bannerChange(data.banners,bannerDiv,milliseconds);
        }
    });
}

// Run banners
showBanner("Test Banner","test",10000);
});

3 个答案:

答案 0 :(得分:3)

以下是基于评论的更新版本:

// Start by getting the banners:

var banners = [];
var currentBanner;

function getBannersFromServer(...) {
    // TODO: make ajax call to server for banners

    // push the banners into a queue for later
    for (var i in bannerFromServer) {
        banners.push(bannersFromServer[i]);
    }
}

// Then run through them:

function showNextBanner() {
    // advance to next banner
    currentBanner++

    // go back to the beginning after the last banner is displayed
    if(currentBanner >= banners.length) currentBanner = 0;

    // pull a banner out of the queue
    var banner = banners[currentBanner];

    // TODO: Show the banner in the div

    // do it again in 10 seconds
    showNextBanner();
}

// start it all
getBannersFromServer();
getNextBanner();

答案 1 :(得分:2)

答案 2 :(得分:2)

试试这个

var i=0;//Global Variable

function bannerChange(banner, div, milliseconds) {
    var length = banner.length;

    setInterval(function() {
        var url = banners[i].url;
        var img = banners[i].image;

        $("#"+div).html("<a href='"+url+"' target='_Blank'><img src='www/images/banners/"+img+"' /></a>");

        i++;
        if(i >= length) i=0;//To reiterate from first
    },milliseconds);            
 }

希望这能解决你的问题。