我正在创建一个包含 6 张幻灯片的滑块,我想在它们之间随机移动,确保前两张幻灯片都不会显示为下一张幻灯片。功能并不重要,因为我真正在做的是生成随机数并跟踪前两个。第一张幻灯片的编号始终为 1,因此对于前两次迭代,这将是之前无法使用的编号之一。
这是我到目前为止所拥有的,它可以很好地生成范围内的随机数,但是“缓存”最后两个值不能可靠地工作:
var rand = Math.floor(Math.random() * 6) + 1;
var prev1 = 1;
var prev2;
function randomSlide() {
// 5 second interval between slides
// Don't show either of previous two slides next
random = setInterval(function() {
prev2 = prev1;
prev1 = rand;
do {
rand = Math.floor(Math.random() * 6) + 1;
} while (rand == prev1 || rand == prev2);
prev1 = rand;
$('#slider').anythingSlider(rand);
//console.log(prev1,prev2);
}, 5000);
}
function firstSlide() {
firstTime = setTimeout(function() {
randomSlide();
}, 5000);
}
firstSlide();
randomSlide();
我认为这很简单,但我的大脑在尝试解析两个“缓存”变量的值时变得疲惫不堪,然后是每个后续迭代。
我在开始时执行一次迭代,因为如果 randomSlide() 在加载时执行,那么第一张(欢迎)幻灯片没有机会显示。