这段时间在写一个打地鼠的javascript;关于倒计时的问题运用了setInterval()方法,但是在停止调用方面却遇到了一些问题。
- 一开始我尝试运用
if(条件){ setInterval(a,b); }
显然我对setInterval()的认识不足,这并不是一个需要反复调用的方法,实际上,setInterval()只需要调用一次就会无限调用/*我早该意识到这一点的*/
-
上网简单查阅了一下,发现setInterval()需要用clearInterval() 来停止。
-
具体说明如下:
-
var myVar = setInterval(function(){ myTimer() }, 1000); function myTimer() { var d = new Date(); var t = d.toLocaleTimeString(); document.getElementById("demo").innerHTML = t; } function myStopFunction() { clearInterval(myVar); }
clearInterval() 方法可取消由 setInterval() 函数设定的定时执行操作。
clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。
注意: 要使用 clearInterval() 方法, 在创建执行定时操作时要使用全局变量:
-
下面再添我修改后的倒计时代码吧!!!
button1.onclick = function() { //如果是暂停,则调整时间 if(c_D_Time_Z_flag){ time = c_D_Time_Z; } c_D_Time_Z_flag = false; start_Time = new Date();//游戏开始时间 myVar = setInterval(count_Down,1000); } function count_Down(){ var c_D_Time1 = new Date(); c_D_Time = time-parseInt(parseInt((c_D_Time1 - start_Time))/1000); document.f1.t4.value = c_D_Time; if(c_D_Time_Z_flag){ /* 获取当前倒计时的值,等待开始进行传输*/ c_D_Time_Z = c_D_Time; } if(c_D_Time<1||c_D_Time_Z_flag){ clearInterval(myVar);//停止调用 } } button2.onclick = function() { //如果是暂停,则调整时间 c_D_Time_Z_flag = true; }