【问题标题】:If statement in for loop doesn't work, javascript如果 for 循环中的语句不起作用,javascript
【发布时间】:2014-03-08 00:34:56
【问题描述】:

我有 7 个变量(秒),我用它们来显示倒计时。他们都在同一页同时倒计时。我想在它们达到“0”后将它们设置为“59”。我是 javascript 新手,如果这是一个愚蠢的问题,我很抱歉。

这是我的代码:

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”之后继续倒计时。那么,我的问题在哪里,我做错了什么?

编辑:我已经编辑了长度错误

【问题讨论】:

  • 检查您的拼写:&gt;lenght&lt;

标签: javascript


【解决方案1】:

你打错了,lenght 应该是length

【讨论】:

  • :D 很抱歉这个错误,谢谢你,我改了但还是不行。
【解决方案2】:

诸如'result'之类的原始类型不是对数组中索引的引用,它只是值。您需要更新数组。

if (result < 0)
  array_s[i] = 59

【讨论】:

    【解决方案3】:

    您将 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
    }
    

    Demonstration

    注意:在此演示中,我显着加速了计时器,因此您可以轻松地看到值递减到 0 以上并重置。此外,重要的是要意识到setIntervalsetTimeout 并不是特别准确,所以如果你真的需要让你的计时器精确到秒,你可能需要使用另一种方法——例如使用Date 对象。

    【讨论】:

    • @ctarimli 关键是去掉sN 变量。请参阅我的更新答案,了解这可能如何工作。
    【解决方案4】:

    只是不要将其加载到结果变量中,并使用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;
        }
    }
    

    【讨论】:

      【解决方案5】:

      是的,您需要更新数组中的变量:
      [s, s2, s3, s4, s5, s6, s7] = array_s;
      请参阅 Andy E 的回答:
      Unpacking array into separate variables in JavaScript

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 2018-10-19
        • 2021-05-04
        • 1970-01-01
        相关资源
        最近更新 更多