javascript等新手,尝试使用jquery创建一个用于淡化徽标的循环。
我已经很好地通过它们循环了。但我试图让循环连续;这样当它到达最后一个徽标时,它就会回到开头,每次到达最后一个徽标时将我的 for-counter 重置为 0。这导致了我认为导致浏览器崩溃的无限循环。所以我做了一个快速的谷歌并发现了 window.setInterval(...) 计时器功能。
我的问题是,现在触发循环代码依赖于时间,我不知道如何计算间隔时间。作为参考,这里是淡入淡出徽标的代码(在尝试循环之前):
$(document).ready(function (){
var fadeDuration = 1000;
var timeBetweenFade = 2000;
var totalTimePerChange = fadeDuration + timeBetweenFade;
var totalLogos = $('.logo').length;
var currentLogo;
var i;
for(i = 0; i < totalLogos; i++)
{
currentLogo = "#img" + i;
if(i == 0){
$(currentLogo).fadeIn(fadeDuration).delay(timeBetweenFade).fadeOut(fadeDuration);
}
else{ //general case
$(currentLogo).delay(totalTimePerChange * i).fadeIn(fadeDuration).delay(timeBetweenFade).fadeOut(fadeDuration);
}
}
});
我试图通过几种方式来获得一个完整循环所花费的时间:
$(document).ready(function (){
//..declarations..
window.setInterval( function() {
//..FOR LOOP HERE..
}, i*(fadeDuration + timeBetweenFade + fadeDuration));
});
//I also tried..
$(document).ready(function (){
//..declarations..
var timeTakenToLoop;
var startLoopTime;
window.setInterval( function() {
startLoopTime = new Date().getTime();
//...FOR LOOP HERE..
timeTakenToLoop = new Date().getTime() - startLoopTime;
}, timeTakenToLoop);
});
但是在这两种情况下,由于函数调用时间错误,我的徽标开始重叠。有更多经验的人可以建议最好的方法是什么吗?
哦,以防万一有人需要它来理解 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>