我有这个功能,它让我的 div 每 3 秒随机“滑动”一次:
$(function () {
$('.fadein p:gt(0)').hide();
setInterval(function () {
var randomize = 1 + Math.floor(Math.random() * $('.fadein > p').length);
$('.fadein > p').fadeOut();
$('.fadein > :nth-child(' + randomize + ')').fadeIn();
}, 3000);
});
这是 fiddle .问题是有时幻灯片是相同的(因为生成的随机数连续两次相同)。你能帮我创建一些变量来存储最后生成的数字,这样当函数调用 Math.random() 时,如果该数字等于最后生成的数字,它会再次调用它。
最佳答案
在随机之前,您应该检查哪些 p
是可见的。然后,您应该在该堆栈中进行游戏,以确保不会将同一图像随机播放两次。这段代码做到了:
$(function () {
$('.fadein p:gt(0)').hide();
setInterval(function () {
var $p = $('.fadein > p').not(':visible') //Select only the hidden one
var randomize = Math.floor(Math.random() * $p.length); //Use only those hidden, remove the 1 since we are now on a 0-based index
$('.fadein > p').fadeOut();
$p.eq(randomize).fadeIn(); //Use eq on the hidden p
}, 3000);
});
关于javascript - jQuery Math.random : avoid repeating same item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873446/