如何多次应用 setInterval 循环

发布于 2024-10-16 17:55:55 字数 619 浏览 4 评论 0原文

这里完全是新手。我有一个脚本,它使用 setInterval 来过滤列表,并每 2 秒向每个列表项添加/删除一个类。

如何编辑此脚本以便可以为每个 setInterval 循环应用不同的时间?

例如:对于第一个列表项,我希望 setInterval(或延迟)为 3 秒,第二个列表项我希望它为 1.5 秒,依此类推,直到列表完成...我需要每个循环的计时不同。怎么能做到这一点呢? 非常感谢您的帮助。

$(function() {
var $list = $('#animation li');
    $list.filter(':first').addClass('go');

    setInterval(function() {
      if( $list.filter('.go').index() !== $list.length - 1 ) {
      $list.filter('.go').removeClass('go').next().addClass('go');
      }
    else {
      $list.removeClass('go').filter(':first').addClass('go');
      }
   }, 2000);

total novice here. I have a script that uses setInterval to filter through a list and adds/removes a class every 2 seconds to each list item.

How could I edit this script so that I can apply different times for each setInterval loop?

For instance: For the first list item, I want the setInterval (or the delay) to be 3 seconds, the second list item I want it to be 1.5 seconds, and so on and so on until the list is finished... I need each loop to be timed differently. How can do this? Your help is greatly appreciated.

$(function() {
var $list = $('#animation li');
    $list.filter(':first').addClass('go');

    setInterval(function() {
      if( $list.filter('.go').index() !== $list.length - 1 ) {
      $list.filter('.go').removeClass('go').next().addClass('go');
      }
    else {
      $list.removeClass('go').filter(':first').addClass('go');
      }
   }, 2000);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

背叛残局 2024-10-23 17:55:55

非常原始的例子,但只是展示方法:

var $list = $('#animation li');
var worker = function(){
  //
  // perform your process(es)
  //

  // only continue on if necessary
  if (continue_working)
    timer = setTimeout(worker, Math.random() * 5 * 1000);
}
var timer = setTimeout(worker, 2000);

// to stop at any time
clearTimeout(timer);

Very primitive example, but just showing methodology:

var $list = $('#animation li');
var worker = function(){
  //
  // perform your process(es)
  //

  // only continue on if necessary
  if (continue_working)
    timer = setTimeout(worker, Math.random() * 5 * 1000);
}
var timer = setTimeout(worker, 2000);

// to stop at any time
clearTimeout(timer);
颜漓半夏 2024-10-23 17:55:55

在 setInterval 内调用 setInterval。

var intervalFunc = new function(){
    if( $list.filter('.go').index() !== $list.length - 1 ) {
  $list.filter('.go').removeClass('go').next().addClass('go');
  }
else {
  $list.removeClass('go').filter(':first').addClass('go');
  }
  // Calculate the next time func
  var timeout = ...
  setInterval(intervalFunc, timeout);
}

setInterval(intervalFunc, 2000);

calling setInterval within setInterval.

var intervalFunc = new function(){
    if( $list.filter('.go').index() !== $list.length - 1 ) {
  $list.filter('.go').removeClass('go').next().addClass('go');
  }
else {
  $list.removeClass('go').filter(':first').addClass('go');
  }
  // Calculate the next time func
  var timeout = ...
  setInterval(intervalFunc, timeout);
}

setInterval(intervalFunc, 2000);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文