我想在while循環內運行一個setInterval進程,該進程會生成一個隨機骰子數並設置骰子圖形來反映這一點。我打算使用setInterval在每個while循環迭代之間添加一個延遲,以便UI代表骰子「滾動」,而不僅僅是返回最終值。在while循環內正確執行setInterval
就目前看來,setInterval不會停止,不管if語句中放置的條件如何。理想情況下,這將是'num'本身,所以骰子的數量可以在其他地方定義。
//roll dice num times
function rollDice(num) {
var counter = 0;
var i = 0;
while (i < num){
var diceDOM2 = document.querySelector(".dice");
var diceIntervalID = setInterval(function(){
//1. Rnd number
dice2 = Math.floor(Math.random()* 6) + 1;
// 2. Update diceDOM with new dice value
diceDOM2.style.display = "block";
diceDOM2.src = "dice-" + dice2 + ".png";
console.log(diceDOM2.src);
//determine setInterval exit
counter++;
console.log(counter);
if(counter > num){
clearInterval(diceIntervalID);
}
}, 1500);
i++;
};
};
非常感謝所有
'setInterval'和任何類型的循環通常都是一個非常糟糕的主意。你想完成什麼_exactly_? – rossipedia
所以,你想讓骰子繼續滾動n次,每次滾動之間的間隔爲1.5s? –
@rossipedia,就像曼努埃爾奧托在下面假設的那樣。我忘了將這個帖子的間隔延遲從1500ms減少到最低 - 我只把它設置的很高,這樣我就能更清楚地看到控制檯的日誌記錄。 – RickHallett