6 つのスライドを含むスライダーを作成しています。前の 2 つのスライドが次のスライドとして表示されないように、それらの間をランダムに移動したいと考えています。私が実際に行っているのは、乱数を生成し、前の 2 つを追跡することなので、機能はそれほど重要ではありません。最初のスライドには常に 1 の番号が付けられるため、最初の 2 つの反復では、使用できない前の番号の 1 つになります。
これは私がこれまでに持っていたもので、範囲内の乱数を生成するためにうまく機能しますが、最後の2つの値を「キャッシュ」することは確実に機能しません:
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();
非常に単純だと思いますが、私の脳は、最初に 2 つの「キャッシュ」変数の値を解析しようとして頭がおかしくなり、その後の各反復で混乱しています。
randomSlide() がロード時に実行されると、最初の (ようこそ) スライドが表示される機会が得られないため、最初に単一の反復を実行しています。