Javascript jquery淡入/淡出循环,如何使用计时器?

Javascript jquery淡入/淡出循环,如何使用计时器?,javascript,jquery,Javascript,Jquery,对于javascript之类的新技术,尝试使用jquery为褪色徽标创建一个循环 我骑着自行车穿过它们,感觉很好。但我试着让循环持续;因此,当它到达最后一个徽标时,它返回到开始,每次到达最后一个徽标时,都将my for计数器重置为0。这导致了一个无限循环,我想这会使我的浏览器崩溃。所以我快速搜索了一下,发现了window.setInterval(…)计时器函数 我的问题是,既然触发循环代码依赖于计时,我就不知道如何计算间隔时间。以下是将徽标淡入淡出的代码(在尝试循环之前): 但在这两种情况下,由

对于javascript之类的新技术,尝试使用jquery为褪色徽标创建一个循环

我骑着自行车穿过它们,感觉很好。但我试着让循环持续;因此,当它到达最后一个徽标时,它返回到开始,每次到达最后一个徽标时,都将my for计数器重置为0。这导致了一个无限循环,我想这会使我的浏览器崩溃。所以我快速搜索了一下,发现了window.setInterval(…)计时器函数

我的问题是,既然触发循环代码依赖于计时,我就不知道如何计算间隔时间。以下是将徽标淡入淡出的代码(在尝试循环之前):

但在这两种情况下,由于函数调用的计时错误,我的徽标开始重叠。有经验的人能建议最好的方法是什么吗?

哦,如果有人需要它来理解javascript,下面是要匹配的html

    <div id="img0" class="logo">
    <img src="{% static "CSS/Images/phone_icon.gif" %}"/>
    </div>
    <div id="img1" class="logo">
    <img src="{% static "CSS/Images/email_icon.gif" %}"/>
    </div>
    <div id="img2" class="logo">I can fade too</div>

我也可以褪色

简单的jQuery方法,无
setTimeout
和无
setInterval

var loop = function(idx, totalLogos) {
  var currentLogo = "#img" + idx;
  $(currentLogo)
    .delay(currentLogo)
    .fadeIn(fadeDuration)
    .delay(currentLogo)
    .fadeOut(fadeDuration, function(){
      loop( (idx + 1) % totalLogos, totalLogos);
    });
}
loop(0, $('.logo').length);​

.

我会使用超时而不是间隔。我认为它更适合你的情况。重置计数器有什么问题?太棒了!但是你能给我多解释一下吗?我试着用谷歌搜索循环函数,但是关键词在哪里模糊了。我特别想知道:为什么(idx,totalogos)在函数中作为参数传递?loop()的参数是什么?你能解释一下上面的模算子的用法吗?很抱歉,这其中的一些可能是显而易见的,我以前有过面向对象编程的经验,但我仍然需要花时间来正确地学习javascript。@Holly,
loop
是我声明的一个函数
idx
Totalogos
是它的唯一参数,这样我就可以知道下一个图像是哪个,当它超过此限制时,可以对计数器进行动画设置和重置。模数(
%
)的使用将索引保持在范围
[0,totalogos)
之间。
    <div id="img0" class="logo">
    <img src="{% static "CSS/Images/phone_icon.gif" %}"/>
    </div>
    <div id="img1" class="logo">
    <img src="{% static "CSS/Images/email_icon.gif" %}"/>
    </div>
    <div id="img2" class="logo">I can fade too</div>
var loop = function(idx, totalLogos) {
  var currentLogo = "#img" + idx;
  $(currentLogo)
    .delay(currentLogo)
    .fadeIn(fadeDuration)
    .delay(currentLogo)
    .fadeOut(fadeDuration, function(){
      loop( (idx + 1) % totalLogos, totalLogos);
    });
}
loop(0, $('.logo').length);​