【问题标题】:Loop through a function every 5 seconds then reset after the last time每 5 秒循环一次函数,然后在最后一次之后重置
【发布时间】:2018-08-08 20:02:10
【问题描述】:

我需要遍历函数 switch_tiles,以便函数以 switch_tiles(1) 运行; switch_tiles(2);等等......但它需要每 5 秒为 i++。我尝试将间隔放在循环内,但这也无济于事。另外,在 i = 5 之后,我希望它重置。

window.setInterval(function(){
 for(var i = 1; i < 5; i++){
   switch_tiles(i);
 }
}, 5000);

这就是函数所做的所有事情,所以这对问题来说不太重要。只是为了上下文而添加的。

function switch_tiles(n){
  var last = $('.active').attr('id');
  $('#'+last).removeClass('fas');
  $('#'+last).removeClass('active');
  $('#'+last).addClass('far');

  $('.active_tile').fadeOut();
  $('#tile_' + n).fadeIn();

  $('#circle_' + n).removeClass('far');
  $('#circle_' + n).addClass('fas');
  $('#circle_' + n).addClass('active');
}

【问题讨论】:

  • 你知道如何在计数器达到 5 后重置它吗?
  • @ialarmedalien 我想我会做一个简单的 if(i===5){i=1} 或类似的东西

标签: javascript jquery loops timer


【解决方案1】:

试试这个:

var i = 1;
function myFunction() {
  if (i > 5)
    i = 1;

  switch_tiles(i++);
  window.setTimeout(myFunction, 5000);      
}
myFunction();

【讨论】:

  • 这无法再次从 1 开始。
  • 它正在工作!!!这是一个小提琴:jsfiddle.net/xpvt214o/574750
  • 不,它不起作用。 “无法从 1 点重新开始”的哪一部分不够清楚?
  • 这很简单!只需在第 5 次运行后将“i”设置为 0。您只是乐于对人们的回答提供负面反馈吗?!
  • 是的,如果指出您的答案没有达到 OP 想要的被视为“负面”的效果,那么它应该得到“负面反馈”。它应得的原因是什么?其他知识较少的人会来这篇文章寻找答案。如果他们选择了您的答案,他们会想知道为什么它不起作用,如何修复它,而这只会产生另一个问题,而您可以修复或删除它。任何一个都有效。感谢您修复它。
【解决方案2】:
var i = 1;
window.setInterval(function(){
   if (i == 5){
      //reset over here.
   }
   switch_tiles(i);
   i++;
}, 5000);

【讨论】:

  • 这正是我所需要的,但我改变了它,所以一开始 i = 2 因为它已经在 tile 1 上,这对我来说是一个错误,但非常感谢!当它允许我接受答案时,我会接受
【解决方案3】:
i = 0;
window.setInterval(function() {
  i++;
  if(i > 5){
    i = 1;
  } 
  switch_tiles(i)
}, 5000);

您只需要随时告诉i 成为您想要的任何数字。此外,这一切都取决于您的瓷砖是在 base-0 还是 base-1。您可以将i++ 放在switch_tiles() 之前或之后

【讨论】:

  • @Reece,别担心!您可以随时将已接受的答案更改为已完成的答案;)
【解决方案4】:

你想要的可能是这样的:

window.setInterval(function(){
  switch_tiles(i++);
  if (i>5) i=0;
  }, 5000);

这将每 5 秒运行一次函数,每次都增加参数。

请注意,这使用了一个全局变量 window.i,所以它有点脏...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多