0

我有一个在图像之间淡入淡出的循环,其间隔由变量itemInterval设置。像这样:

            // interval between items
            var itemInterval = 5500;

            // start loop
            var infiniteLoop = setInterval(function() { 

                // initial fade out
                $('.rotating-item').eq(currentItem).fadeOut(fadeTime);

                // set counter
                if (currentItem == numberOfItem -1) {
                    currentItem = 0;
                } else {
                    currentItem++;
                }

                // next item fade in
                $('.rotating-item').eq(currentItem).fadeIn(fadeTime);

            }, itemInterval);

我真正想做的是,如果有一个仅在第一次运行循环时运行的初始时间间隔,然后是之后每次运行的第二个时间间隔。

所以当用户打开页面时,第一次淡入淡出很快,但是他们等待下一张图片淡入淡出的时间更长。

我对 Javascript 很陌生,所以如果您能编辑我的代码以使其工作并让我知道您做了什么,我将不胜感激。如果提前感谢您的时间:)

4

2 回答 2

1

您可以尝试使用普通函数而不是匿名函数:

        // interval between items
        var itemInterval = 5500;
        var infiniteLoop;//this contains the id of the interval to be used in clearinterval by the way
        setTimeout(function(){
              // this code will run only once, one second after the page loads.
              myFunc();
              infiniteLoop = setInterval(myFunc, itemInterval);
              // commence loop that will run forever unless you use clearinterval(infiniteLoop);
        }, 1000);
        // start loop


        function myFunc() { 
            // this code will run every time the function is called
            // initial fade out
            $('.rotating-item').eq(currentItem).fadeOut(fadeTime);

            // set counter
            if (currentItem == numberOfItem -1) {
                currentItem = 0;
            } else {
                currentItem++;
            }

            // next item fade in
            $('.rotating-item').eq(currentItem).fadeIn(fadeTime);

        }

这样,您可以手动调用此函数,然后开始它的间隔。

于 2012-04-08T15:17:02.587 回答
1

尝试这个:

// interval between items
var itemInterval = 5500;

// start loop
var infiniteLoop = setInterval("fadeChange()", itemInterval);

function fadeChange() {
// initial fade out
$('.rotating-item').eq(currentItem).fadeOut(fadeTime);

// set counter
if (currentItem == numberOfItem -1) {
    currentItem = 0;
} else {
    currentItem++;
}

// next item fade in
$('.rotating-item').eq(currentItem).fadeIn(fadeTime);
}

这将避免最初调用该函数,并且该函数应每 5.5 秒调用一次。

于 2012-04-08T15:21:27.017 回答