我創建了一個包含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