-2

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

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(); 
4

2 回答 2

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();

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

演示

于 2012-06-15T15:50:14.323 回答
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();
于 2012-06-15T16:13:20.137 回答