簡體   English   中英

如果for循環中的語句不起作用,則javascript

[英]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以下並重置。 同樣,重要的是要認識到setIntervalsetTimeout並不是特別准確,因此,如果您確實需要使計時器精確到秒,則可能需要使用其他方法,例如使用Date對象。

是的,您需要更新數組中的變量:
[s, s2, s3, s4, s5, s6, s7] = array_s;
看到安迪E的答案:
在JavaScript中將數組解壓縮為單獨的變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM