褪色图像进出,间隔混乱

时间:2014-10-07 18:52:47

标签: javascript jquery html

我正在为某个div随意淡入淡出图像。

这是div html代码:

<div id="container" class="container">
    <img src="http://farm3.static.flickr.com/2610/4148988872_990b6da667.jpg" />
    <img src="http://farm3.static.flickr.com/2597/4121218611_040cd7b3f2.jpg" />
    <img src="http://farm3.static.flickr.com/2531/4121218751_ac8bf49d5d.jpg" />
</div>

这是javascript:

$('.container img:gt(0)').hide();

$(function () {

    var className = ".container";
    var suffix = " :first-child";
    var path = className.concat(suffix);
    setInterval(function () {
        var randomnumber = Math.floor(Math.random() * $("#container").children().length);
        console.log($("#container").children().length);
        console.log(randomnumber);
        // Fade out the first element and fade in the next and then move the elements

        jQuery(path).fadeOut(1000, function () {
            $("#container > img:eq(" + randomnumber + ")").fadeIn(1000);
            jQuery(className).append($(this).clone());

            jQuery(this).remove();
        });
    },
    3000);
});

它本质上有效,但我每3000毫秒就会消失,当前图像淡出时,新图像开始淡入。

但有时间隔是关闭的:它不会在3秒后开始褪色,或者由于某种原因它停留在空白的白色屏幕上。我不确定为什么会这样做。有什么想法吗?

如果您查看jsfiddle一分钟,您会发现它不一致:http://jsfiddle.net/x300a41n/18/

感谢。

2 个答案:

答案 0 :(得分:1)

我已经使用了一些带有一些新JS的CSS来获得一个随机滑块,你觉得它很好吗?

http://jsfiddle.net/x300a41n/19/

$(function () {

    var nImages = $("#container").children().length;
    var currentImage = 1;

    setInterval(function () {

        var randomnumber = Math.floor(Math.random() * nImages);
        randomnumber -= 1;

        if ( currentImage == randomnumber )
            randomnumber = ( randomnumber < nImages ) ? randomnumber + 1 : 0;

        currentImage = randomnumber;
        $('#container img').fadeOut(1000);
        $('#container > img:eq('+randomnumber+')').fadeIn(1000);

    },3000);


});

答案 1 :(得分:0)

$('#container img').hide();
var myFadeIn = function () {
    var randomnumber = Math.floor(Math.random() * $("#container").children().length);
    $("#container > img:eq(" + randomnumber + ")")
        .fadeIn(1000)
        .delay(2000)
        .fadeOut(1000, myFadeIn);
};
myFadeIn();

此代码适用于FadeIn / FadeOut的命名函数(通过递归调用)。