Javascript / JQuery循环遍历数组值

时间:2013-03-17 03:22:35

标签: javascript jquery loops delay slidetoggle

我正试图在我的网站上显示/隐藏赞助商徽标,一个接一个地显示/隐藏。我觉得我有点亲近,但在敲了敲头后,我觉得是时候帮忙了。这是我的代码:

var sponsors = ["prointec","pequigraf"];
for (var i = 0; i < sponsors.length; i++){
    setTimeout($(document.getElementById(sponsors[i])).slideToggle("slow", "swing"), 1000);
    setTimeout($(document.getElementById(sponsors[i])).slideToggle("slow", "swing"), 10000 * (i + 1));
}

基本上,它应该在另一个之后显示一个(10秒之后),而是一次性运行。任何提示?提前谢谢!

2 个答案:

答案 0 :(得分:2)

我发布这个作为答案而不是评论只是为了确保我可以做一些正确的代码格式化。

rpamely的代码看起来就像你需要的,但你可以简化它。只需在两个赞助商ID前加上“#”,即可删除所有document.getElementById()次来电:

var sponsors = [ "#prointec","#pequigraf" ];

var i = 0;

$(sponsors[0]).show();
$(sponsors[1]).hide();

var toggleSponsor = function() {
    $(sponsors[i]).hide();

    i = (i + 1) % sponsors.length;
    $(sponsors[i]).show();

    setTimeout(toggleSponsor, 10000);
};

setTimeout(toggleSponsor, 10000);

答案 1 :(得分:1)

您需要为超时提供功能参考。你应该嵌套你的超时。在编写JavaScript时尝试异步思考。

我没有测试过这个,但这就是我提出来的。另请注意,10秒是10,000毫秒,而不是1000毫秒。

var sponsors = ["prointec","pequigraf"];

var i = 0;

$(document.getElementById(sponsors[0])).show();
$(document.getElementById(sponsors[1])).hide();

var toggleSponsor = function() {
    $(document.getElementById(sponsors[i])).hide();

    i = (i + 1) % sponsors.length;
    $(document.getElementById(sponsors[i])).show();

    setTimeout(toggleSponsor, 10000);
};

setTimeout(toggleSponsor, 10000);