我可能以完全錯誤的方式處理這個問題,因為我在 javascript 方面有點新手,但基本上我想要做的(為了一點樂趣)是有一個表格的單元格單擊更改顏色,然後讓北、東、南和西的單元格依次更改為不同的顏色(想想炸彈人中的炸彈效果)。
到目前為止,我已經設法使用以下代碼使向南工作:
function timeOutDown(i) {
let bubbleRowPositive = col + rowArray[i];
let bubbleRowPositiveId = document.getElementById(bubbleRowPositive);
setTimeout(function() {
bubbleRowPositiveId.style.backgroundColor = "#AA3333";
},i * 50);
}
for (let i=row; i<colArray.length; i++) {
timeOutDown(i);
}
對於上下文,有 15 行和 15 列大小均勻的表格單元格,ID 為“a1”和“h14”。
然而,我遇到的問題是,即使在反轉 for 循環時,逆仍然會向上迭代,我不知道為什麼:
function timeOutUp(k) {
let bubbleRowNegative = col + rowArray[k];
let bubbleRowNegativeId = document.getElementById(bubbleRowNegative);
setTimeout(function() {
bubbleRowNegativeId.style.backgroundColor = "#AA3333";
console.log(`Index: ${k}, Row Num: ${rowArray[k]}`);
},k * 50);
}
for (let k=row-2; k>=0; k--) {
timeOutUp(k);
console.log(k);
}
我開始使用相同的函數來處理兩個 for 循環,但沒有用,所以我嘗試使用 2 個單獨的函數來使用這種方法。
有沒有更簡單的方法來解決這個問題?
即使您的 for 循環反轉,它仍然為每次迭代傳遞相同的索引,並且該索引用於計算它獲得的延遲。所以無論如何,索引處的項目0
都會有0*50
幾毫秒的延遲,無論它是先發生還是最後發生。您仍然需要您的原始計數器來定義它們的有序索引。你可以這樣解決:
function timeOutUp(k, i) {
let bubbleRowNegative = col + rowArray[k];
let bubbleRowNegativeId = document.getElementById(bubbleRowNegative);
setTimeout(function() {
bubbleRowNegativeId.style.backgroundColor = "#AA3333";
console.log(`Index: ${k}, Row Num: ${rowArray[k]}`);
},i * 50);
}
for (let k=row-2, i = 0; k>=0; k--, i++ ) {
timeOutUp(k, i);
console.log(k, i);
}
我剛剛添加了 1 個變量:i
重新輸入,計數。它被傳遞到timeOutUp
以您想要的順序計算實際延遲。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句