我想在屏幕上一次显示三张图片。我将我的照片的来源保存在一个数组中,我将继续从这个数组中取出三张随机图片,将它们从数组中删除,在屏幕上显示一段时间,然后用下一组3张图片替换它们直到我用光了。
我无法确定问题是什么。
我在这里复制了代码:
$(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/
答案 0 :(得分:1)
WHILE循环中的FOR循环不会立即执行,因此所有图像都会立即附加,然后在3秒延迟后淡出。延迟(3000)不像在同步编码中那样延迟;它只会延迟队列中跟随它的下一个项目(fadeOut)。
查看setTimeout
和setInterval
函数。使用setInterval
,您可以每x秒更换一次照片。
更新了小提琴,我认为你会尝试做什么: