3

我正在尝试在我的网站上显示/隐藏赞助商徽标,无休止地一个接一个地显示/隐藏。我想我有点接近了,但是在撞了我的头之后,我决定是时候寻求帮助了。这是我的代码:

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 秒后),而是一次运行。有什么提示吗?提前致谢!

4

2 回答 2

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);
于 2013-03-17T03:55:41.547 回答
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);
于 2013-03-17T03:31:46.750 回答