[英]If statement in for loop doesn't work, javascript
我有7個變量(秒),我用它們來顯示倒計時。 他們都在同一頁面上同時倒數。 我想將它們設置為“ 0”后將其設置為“ 59”。 我是Java語言的新手,所以很抱歉這是一個愚蠢的問題。
這是我的代碼:
s--; s2--; s3--; s4--; s5--; s6--; s7--;
var array_s = [s, s2, s3, s4, s5, s6, s7];
for (var i = 0; i < array_s.length; i++) {
var result = array_s[i];
if( result < 0) {
result = 59;
}
}
編輯:也嘗試過這種方式:
var array_s = [s, s2, s3, s4, s5, s6, s7];
for (var i = 0; i < array_s.length; i++) {
if( array_s[i] < 0) {
array_s[i] = 59;
}
}
但是他們繼續在“ 0”之后遞減計數。 那么,我的問題出在哪里,我在做什么錯?
編輯:我已編輯長度錯誤
您打錯了, lenght
應該是length
。
諸如“結果”之類的原始類型不是對數組中索引的引用,而只是對值的引用。 您需要更新陣列。
if (result < 0)
array_s[i] = 59
只是不要將其加載到結果var中,而是使用length
:
var array_s = [s, s2, s3, s4, s5, s6, s7];
for (var i = 0; i < array_s.length; i++) {
if( array_s[i] < 0) {
array_s[i] = 59;
}
}
您將result
設置回59,但從未將其值設置回適當的sN
變量。 單獨設置array_s[i]
不能像現在那樣與您的代碼一起使用,因為這只會校正數組中的值,而不是sN
變量。
我建議完全使用一個數組來擺脫sN
變量:
// initialize array once
var array_s = [...];
...
for (var i = 0; i < array_s.length; i++) {
var result = array_s[i];
result--; // decrement each value
if(result < 0) { // check for values < 0
result = 59;
}
array_s[i] = result; // update values
}
注意:在此演示中,我大大加快了計時器的工作速度,因此您可以輕松地看到這些值遞減到0以下並重置。 同樣,重要的是要認識到setInterval
和setTimeout
並不是特別准確,因此,如果您確實需要使計時器精確到秒,則可能需要使用其他方法,例如使用Date
對象。
是的,您需要更新數組中的變量:
[s, s2, s3, s4, s5, s6, s7] = array_s;
看到安迪E的答案:
在JavaScript中將數組解壓縮為單獨的變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.