Javascript 每个函数检查是否遍历了所有项,然后重新开始

Javascript 每个函数检查是否遍历了所有项,然后重新开始,javascript,jquery,Javascript,Jquery,我想添加一个功能,检查我所有的li.cont是否都被迭代过,如果是,重新开始。与当前的功能不同,当前的功能是最后一个项目淡出,然后区域变为空白。您是否尝试过创建对象的副本并将其添加到辅助数组中,然后再返回?在制作幻灯片时,我会使用angular。我从数组的末尾开始,一直到0 $('li.cont').each(function(i) { $(this).delay((i + 1) * 3000).fadeOut(1500); 或者,您可以使用array.pop()或array.shif

我想添加一个功能,检查我所有的
li.cont
是否都被迭代过,如果是,重新开始。与当前的功能不同,当前的功能是最后一个项目淡出,然后区域变为空白。

您是否尝试过创建对象的副本并将其添加到辅助数组中,然后再返回?在制作幻灯片时,我会使用angular。我从数组的末尾开始,一直到0

$('li.cont').each(function(i) {
    $(this).delay((i + 1) * 3000).fadeOut(1500);
或者,您可以使用array.pop()或array.shift()获取最后一项或第一项的值,并将其从列表中删除。我在本例中展示的代码肯定是实现这一点的最长方法。堆栈上有许多示例可以更有效地执行此操作,具体取决于您希望如何编写代码

这里有一个很好的例子:


我建议使用
fadeOut
的回调参数,当一个动画完成时调用该参数。在那里,你将以循环的方式开始下一步。一旦你再次开始,你只需要恢复情况并显示所有元素

var$items=$('li.cont');
(功能循环(一){
if(!i)$items.show();//从头开始:全部显示
$items.eq(i).fadeToggle(1500,loop.bind(null,(i+1)%$items.length));
})(0);

  • A
  • B
  • C

为什么不在每个循环周围放一个循环呢?现在还有jquery 3.1问题?我想你在寻找无限循环,对吧?如果你再也看不到任何东西,你说的淡出时“重新开始”是什么意思?你到底想实现什么?像无限衰减/衰减效应?如果是这样的话,一个带有步骤的css转换将是一个更好的方法。这与这个问题有什么关系?
var a = [];
var b = [];

function changeIn(){
     var l = a.length
     if(a.length === 0)
     {
          angular.copy(b, a);
     }

     // do stuff here
     var x = []
     angular.copy(a[l], x);
     b.push(x);
     if (l > -1) {
         array.splice(l, 1);
     }
};