大姐想用do while做一个定时器的循环,所做的事,初始值0 递增+1,到5的时候递减-1到0,然后继续无限重复
也是就是和 先从0加到5 然后再从5减到0,这样一直循环下去。
大姐给出的代码:
var initial = 0; do { setInterval(function() { if(initial==5){ initial--; }else if(initial==0){ initial++; } $(".result3").html(initial); },1000); }while(???);
首先这里,我们进入了一个误区,利用 do{} while() 循环来做一个 无限重复的事,虽然是循环,但是也会进入死循环当中, 浏览器进入假死状态
这里 定时器,也是属于循环的一种!但是他是按照我设定的时间来循环。这样无疑就比一般的循环好多了,那么我们就抛开do while循环,只使用定时器就可以了
我给出的一段代码:
var initial = 0,s=false; setInterval(function() { if(initial<=5&&s==false){ initial++; if(initial>5){ s=true } } if(initial>0&&s==true){ initial--; if(initial<1){ s=false } } $(".result3").html(initial); },1000);
虽然目的达到了,但是代码看起来还是比较繁琐的。不太理想。
大姐在网上搜集了一段代码,我们来看看:
var step = 1, counter = 0 ; setInterval(function(){ counter+=step; if(counter>=10){ step = -1; }else if(counter<=0){ step = 1 } $(".result2").html(counter); },1000);
代码明显看起来,比上面的代码要少的多,而且做了相同的事,这里我们的思路都差不多,都是两个变量来控制的;但是if else if 的使用,就要比上面的代码好的多了
再来看看大姐老大给的代码:
var bool=false;var i=0; setInterval(function(){ if(!bool){ i++; bool=i==10; } else{ i--; bool= i!==0; } $(".result1").html(i); },1000);
这三段代码的思路都差不多,使用的方法不同,用到的知识也是不同的,一个比一个好。这个用到了 false = 0
只能说我初入前端界,还是太嫩了,希望各位同仁,多多指教!
转载请注明:Falost的小窝 » 一个循环和定时器问题 引发的血案