如何在jquery while循环中延迟一组指令

时间:2013-12-05 01:06:14

标签: javascript jquery

我想在屏幕上一次显示三张图片。我将我的照片的来源保存在一个数组中,我将继续从这个数组中取出三张随机图片,将它们从数组中删除,在屏幕上显示一段时间,然后用下一组3张图片替换它们直到我用光了。

我无法确定问题是什么。

我在这里复制了代码:

的JavaScript

    $(document).ready(function () {
    $('#start').click(function () {
        "use strict";
        $(this).fadeOut(400);
        $('#start').remove();
        var $arrayOfPicSrc = ["p1.jpg", "p2.jpg", "p3.jpg", "p1.jpg", "p2.jpg", "p3.jpg"];
        var randomNumber;
        var $picturesToPrint;
        var i;
        while ($arrayOfPicSrc.length > 0) {
            $picturesToPrint = [];
            for (i = 0; i < 3; i = i + 1) {
                randomNumber = Math.ceil(Math.random() * $arrayOfPicSrc.length) - 1;
                $picturesToPrint.push($arrayOfPicSrc[randomNumber]);
                $arrayOfPicSrc.splice(randomNumber, 1);
            }
            for (i = 0; i < 3; i = i + 1) {
                $('body').append("<img class='toRemove' src=" + $picturesToPrint[i] + " height='100px' width='100'>");
            }
            $('.toRemove').delay(3000).fadeOut('slow', function () {
                $('.toRemove').remove();
            });
            $picturesToPrint.splice(0, 3);
        }
    });
});

以下是与我写的JS和HTML的链接:http://jsfiddle.net/7Lgpx/

1 个答案:

答案 0 :(得分:1)

WHILE循环中的FOR循环不会立即执行,因此所有图像都会立即附加,然后在3秒延迟后淡出。延迟(3000)不像在同步编码中那样延迟;它只会延迟队列中跟随它的下一个项目(fadeOut)。

查看setTimeoutsetInterval函数。使用setInterval,您可以每x秒更换一次照片。

更新了小提琴,我认为你会尝试做什么:

http://jsfiddle.net/Khj8m/