我可能以完全錯誤的方式處理這個問題,因為我在 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 個單獨的函式來使用這種方法。
有沒有更簡單的方法來解決這個問題?
uj5u.com熱心網友回復:
即使您的 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以您想要的順序計算實際延遲。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/374258.html
標籤:javascript for循环 设置超时
上一篇:從txt檔案讀取時如何解決“錯誤:'The'沒有命名型別”?
下一篇:在for回圈中增加x的值
