我有一个var
,我试图让它的值数到100.当它达到100时,它应该重新计数到0.这是我的实验代码。
var min = 0 - 1,
max = 100 + 1,
now = 0;
var timer = setInterval(function(){
if(now <= max){
now++;
console.log(now);
}else if ( now >= min){
now--;
console.log(now);
}
},500);
代码一直有效,直到它计数到100,但它不会将其计数回到0,并一遍又一遍地重复相同的过程。
任何人都可以告诉我我做错了什么,或者我做错了。你能解释我应该用的方法吗?
答案 0 :(得分:3)
使用变量step = +1;
,一旦达到最大值,该变量将更改为step = -1;
:
var min = 0,
max = 100,
step = +1,
now = 0;
var timer = setInterval(function(){
if(now >= max) {step = -1;}
if(now <= min) {step = +1;}
now += step;
console.log(now);
}, 20);
答案 1 :(得分:1)
var count = 'up';
var min = 0 - 1,
max = 100 + 1,
now = 0;
var timer = setInterval(function(){
if(count === 'up'){
if(now <= max){
now++;
}
else{
count = 'down';
now--;
}
}
else{
if(now >= min){
now--;
}
else{
count = 'up';
now++;
}
}
console.log('now: ' + now);
},500);
尝试此演示(计算到10以减少执行时间)
答案 2 :(得分:0)
想想你在做什么。当计数达到101时,它不会计数,因为if语句为false。所以你减少回到100.但是在下一个循环中,第一个if语句再次为真,你就增加了。
您可以在第一次减少时设置一个标志,并将标志添加到第一个if条件中,这意味着,一旦设置了标志,您再也不会增加该值。