Javascript - 试图延迟遍历 for 循环

标签 javascript jquery

我试过在其他帖子中找到我的答案并且可以找到一些零碎的东西,但不是完整的答案。所以,很抱歉,如果这是一个重复的问题 - 据我所知,事实并非如此。

我正在努力完成三件事:

  1. 在 itmes 之间延迟通过 for 循环迭代一秒钟
  2. 在继续下一项之前将上一项恢复到其原始状态
  3. 在最后一项之后重新开始循环

我已经完成了第一个,但不知道如何完成接下来的两个。

这是一个淡化后的代码示例:

HTML:

<p>First paragraph.</p>
<p>Second paragraph.</p>
<p>Third paragraph.</p>
<p>Fourth paragraph.</p>
<p>Fifth paragraph.</p>
<p>Sixth paragraph.</p>
<p>Seventh paragraph.</p>
<p>Eighth paragraph.</p>
<p>Nineth paragraph.</p>
<p>Tenth paragraph.</p>

CSS:

p.red {color: red;}

JS:

function addRed() {
    var spans = $('p'),
        count = spans.length,
        delay = 1000;
    for(var i = 0; i <= count; i++) {
        (timer(i, spans, delay));
    } 
}

function timer(a, b, c) {
  setTimeout(function() {
    $(b[a]).toggleClass('red');
  }, c * a);
} (0);

addRed();

我想要第一个<p>在这个例子中变红,等待一秒,然后变红 <p>红色并将第一个恢复到其原始状态。然后,一旦循环完成(遍历整个 <p> 列表),从顶部重新开始。 IE。;一个重复的循环。

抱歉,如果这是问三个不同的问题。将它们组合在一起更容易也更有意义。

这是我的 fiddle .

最后一点,我不受这些代码的约束。如果需要,我愿意更改它。

最佳答案

  1. 对于点 #2,只需从所有 p 元素中删除 red 类,然后添加到当前
  2. 对于点 #3,使用 index()检查这是否是最后一次超时并在一秒后重新开始

function addRed() {
  var spans = $('p'),
    count = spans.length,
    delay = 1000;
  for (var i = 0; i <= count; i++) {
    (timer(i, spans, delay));
  }
}

function timer(a, b, c) {
  setTimeout(function() {

    $('p').removeClass('red');
    $(b[a]).addClass('red');

    var currentIndex = $(b[a]).index();
    if (currentIndex == $('p').length) {
      setTimeout(function() {
        addRed();
      }, 1000);
    }
  }, c * a);
}(0);

addRed();
p.red {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<p>First paragraph.</p>
<p>Second paragraph.</p>
<p>Third paragraph.</p>

关于Javascript - 试图延迟遍历 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31197936/

相关文章:

javascript - 分页不适用于 KO Grid

javascript - Bootstrap 3 Mobile Forms 自动调整大小不起作用

javascript - 如何为我的 jquery slider 制作交互式元素符号

javascript - 基于自定义数组顺序的 tinysort 排序 div

javascript - 从同一个 node.js 子进程运行多个命令

java - 动态添加 UI 组件

用于下拉表单+搜索的 JQuery 插件,如 JIRA

javascript - PHP Curl 超时导致 Javascript 客户端崩溃

jquery - Columndefs 不工作数据表

javascript - document.getElements() 支持