使用setTimeout的javascript增量/减量数

时间:2012-06-15 15:44:22

标签: javascript settimeout increment

我正在尝试使用计时器递增和递减数字,我的代码不起作用...

var i = 0,
max = 5,
timer = function() {
    if (i<max) {
        i++;
        console.log(i) //ok
    } 

    if (i==max) {
        i--;
        console.log(i) //fail ...
    }

    setTimeout(timer, 60); 
}; 

timer(); 

2 个答案:

答案 0 :(得分:4)

当它变为5时,第二个if语句使它变为4,然后第一个if语句将其返回到5。

var i = 0,
max = 5,
dir = 0; // 0 for up, 1 for down.

timer = function() {
    if (dir == 0) {
        i++;
        console.log(i)
    }

    if (dir == 1) {
        i--;
        console.log(i)
    }

    if(i == 0) {
        dir = 0;
    } else if(i == max) {
        dir = 1;
    }
    setTimeout(timer, 60);
}

timer();

我使用方向变量来跟踪它的计数方式。

Demo

答案 1 :(得分:1)

@sachleens的想法,更短的代码

var i = 0, max = 5, cnt = 1;
      timer = function() {
        i += cnt;
        if (i>=max) {cnt = -1;}
        if (i===0)  {cnt = 1;}
        console.log(i);
        setTimeout(timer,60);
      }
timer();