Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/JQuery通过数组值循环_Javascript_Jquery_Loops_Delay_Slidetoggle - Fatal编程技术网

Javascript/JQuery通过数组值循环

Javascript/JQuery通过数组值循环,javascript,jquery,loops,delay,slidetoggle,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);

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

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));
}
var赞助商=[“prointec”,“pequigraf”];
对于(变量i=0;i<0.length;i++){
setTimeout($(document.getElementById(发起人[i])).slideToggle(“slow”,“swing”),1000);
setTimeout($(document.getElementById(发起人[i])).slideToggle(“慢”、“摆动”),10000*(i+1));
}

基本上,它应该一个接一个地显示(10秒后),但相反,它会同时运行。有什么提示吗?提前谢谢

您需要给超时一个函数引用。同时,你也应该设定你的超时时间。在编写JavaScript时尝试异步思考

我还没有测试过这个,但这是我想到的。还要注意,10秒是10000毫秒,而不是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);

我把它作为一个答案而不是一个评论来发布,只是为了确保我能做一些正确的代码格式化

rpamely的代码看起来正是您所需要的,但是您可以将其简化很多。只需在两个赞助商ID前面加上“#”,就可以删除所有
文档。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);

太好了!工作很有魅力!万分感谢!不客气。如果你想让我解释代码的任何部分,请提问。为什么人们对这个问题投反对票???如果你对阅读/回答初学者的东西感到不舒服,就忽略它。似乎有些人在SO将新手问题视为专门用来抨击的游戏。为了防止有人想检查它的外观(或者如果有人想使用这个简单但有效的代码),下面是它的实现(英雄形象下面有一个黑条):