2013-01-11 39 views
1

这是我的第一篇文章在这里。我对JS并不是很熟悉,并且还没有掌握它。我一直在尝试各种代码来尝试在超时之前停止我的倒数计时器(这不是我的代码),但无济于事,因此放弃了“猜测”,并会问专家。提前致谢。我想停止我的倒计时器

<button onclick="myStopFunction()">STOP</button><p> 

<script> 
function countDown(frm) 
{ 
var start=frm.v1.value; 
var now=new Date(); 
var end=new Date(frm.yr.value,frm.mth.value- 1,frm.day.value,frm.hrs.value,frm.min.value); 
var diff = (end - now)/1000; 
var step=(start-frm.v2.value)/diff; 
document.getElementById("counter").innerHTML=start; 
var myint=setInterval(function(){start=start-step;  document.getElementById("counter").innerHTML=start.toFixed(2); 
if(start<frm.v2.value){document.getElementById("counter").innerHTML="Ended";  clearInterval(myint)}},1000); 
} 


function myStopFunction() 
{ 
clearInterval(myint); 
} 
</script> 

我试过了您的更新(请参阅下文),但是计数器将不再启动。我可能误解了你的回复。

var myint; 
function countDown(frm) 
{ 
var start=frm.v1.value; 
var now=new Date(); 
var end=new Date(frm.yr.value,frm.mth.value- 1,frm.day.value,frm.hrs.value,frm.min.value); 
var diff = (end - now)/1000; 
var step=(start-frm.v2.value)/diff; 
document.getElementById("counter").innerHTML=start; 

} 
{ 
myint=setInterval(function(){start=start-step;  document.getElementById("counter").innerHTML=start.toFixed(2); 
if(start<frm.v2.value) {document.getElementById("counter").innerHTML="Ended";clearInterval(myint)}},1000); 
} 

function myStopFunction() 
{ 
clearInterval(myint); 
} 

你的一个“专家”非常感谢你。看完你回复第一百次,我就会发现我绝对误解了你的回复。现在它工作正常。我是一名学习者。

回答

4

myStopFunction不知道什么myint是因为myintcountDown的本地。一个简单的解决方案是将myint置于countDown以外的全局。

var myint; 
function countDown(frm) 
{ 
... 
myint=setInterval(... //note the lack of var here 
... 
} 

function myStopFunction() 
{ 
clearInterval(myint); 
} 
+0

var myint; function countDown(frm) { var start = frm.v1.value; var now = new Date(); var end = new Date(frm.yr.value,frm.mth.value-1,frm.day.value,frm.hrs.value,frm.min.value); var diff =(end - now)/ 1000; var step =(start-frm.v2.value)/ diff; document.getElementById(“counter”)。innerHTML = start; } { 明特= setInterval的(函数(){开始=启动步骤;的document.getElementById( “计数器”)的innerHTML = start.toFixed(2);如果 (启动 auAlan