我创建了一个包含6张幻灯片的滑块,并且我想随机在它们之间移动,确保前两张幻灯片都不会显示为下一张幻灯片。功能并不重要,因为我真正在做的是生成随机数并跟踪前两个。第一张幻灯片始终编号为1,因此前两次迭代将成为以前不能使用的编号之一。Javascript:生成范围内的随机数字,避免前两个
这里是我迄今为止,它在范围内产生随机数的正常工作,但“缓存”的最后两个值不正常:
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()在加载时执行,那么第一个(欢迎)幻灯片没有机会显示。
你说得对,randomSlide()的初始触发似乎不再需要。出于兴趣,设置两个时间间隔有什么影响?每次5000ms通过时,我是否同时有效地调用randomSlide()两次? – melat0nin
是的,就是这样。 – JJJ