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

1 回答 1

4

myStopFunction不知道是什么myint,因为myint是本地的countDown。一个简单的解决方案是myint通过将其放在countDown.

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

function myStopFunction()
{
 clearInterval(myint);
}
于 2013-01-11T22:18:19.677 回答