如何在javascript中使用一个按钮恢复和暂停计时器?

如何在javascript中使用一个按钮恢复和暂停计时器?,javascript,html,Javascript,Html,我想创建一个计时器暂停和恢复在一个按钮在JavaScript。。。 计时器工作正常。如果是两个不同的按钮,暂停和恢复工作正常。但如果我们做成单键恢复,则不会发生。需要帮助 JavaScript: paused = false; // set minutes var mins = 30; // calculate the seconds var secs = mins * 60; var t = 0; function countdown() { t = setTimeout('D

我想创建一个计时器暂停和恢复在一个按钮在JavaScript。。。 计时器工作正常。如果是两个不同的按钮,暂停和恢复工作正常。但如果我们做成单键恢复,则不会发生。需要帮助

JavaScript:

paused = false;
 // set minutes
var mins = 30;
 // calculate the seconds 
var secs = mins * 60;
var t = 0;

function countdown() {
    t = setTimeout('Decrement()', 1000);
}

function Decrement() {
    if (document.getElementById) {
        minutes = document.getElementById("minutes");
        seconds = document.getElementById("seconds");
        // if less than a minute remaining
        if (seconds < 59) {
            seconds.value = secs;


        } else {
            minutes.value = getminutes();
            seconds.value = getseconds();
        }
        secs--;
        t = setTimeout('Decrement()', 1000);
    }
}

function getminutes() {
    // minutes is seconds divided by 60, rounded down
    mins = Math.floor(secs / 60);
    return mins;
}

function getseconds() {
    // take mins remaining (as seconds) away from total seconds remaining
    return secs - Math.round(mins * 60);
}

function pause() {
    clearTimeout(t);
    document.getElementById('Pause').value = "Resume";
    document.getElementById("Pause").onclick = resume();
}

function resume() {
    t = setTimeout();
}
paused=false;
//设定分钟数
var mins=30;
//计算秒数
var secs=分钟*60;
var t=0;
函数倒计时(){
t=设置超时('Decrement()',1000);
}
函数减量(){
if(document.getElementById){
分钟=document.getElementById(“分钟”);
秒=document.getElementById(“秒”);
//如果剩下不到一分钟
如果(秒<59){
秒。值=秒;
}否则{
minutes.value=getminutes();
seconds.value=getseconds();
}
秒--;
t=设置超时('Decrement()',1000);
}
}
函数getminutes(){
//分是秒除以60,四舍五入
分钟=数学楼层(秒/60);
返回分钟;
}
函数getseconds(){
//从总剩余秒数中减去剩余分钟数(以秒计)
返回秒-数学轮(分钟*60);
}
函数暂停(){
清除超时(t);
document.getElementById('Pause').value=“Resume”;
document.getElementById(“暂停”).onclick=resume();
}
功能恢复(){
t=设置超时();
}
HTML:


倒计时
第二
倒计时();

在清除计时器后的暂停功能中,设置变量
t=0
然后创建一个函数pausePlay(),该函数检查
是否(t)pause();否则玩()

调用pausePlay onClick

问题出在您的
恢复功能中

应该是这样的

试试这个代码

<html>
<head>
<title>Countdown</title>
<script type="text/javascript">
paused = false;
// set minutes
var mins = 30;
// calculate the seconds 
var secs = mins * 60;
var t=0;
  var flagTimer='resume';
function countdown() {
    t = setTimeout('Decrement()',1000);
}
function Decrement() {
    if (document.getElementById) {
        minutes = document.getElementById("minutes");
        seconds = document.getElementById("seconds");
        // if less than a minute remaining
        if (seconds < 59) {
            seconds.value = secs;
        } else {
            minutes.value = getminutes();
            seconds.value = getseconds();
        }
        secs--;
        t= setTimeout('Decrement()',1000);
    }
}
function getminutes() {
    // minutes is seconds divided by 60, rounded down
    mins = Math.floor(secs / 60);
    return mins;
}
function getseconds() {
    // take mins remaining (as seconds) away from total seconds remaining
    return secs-Math.round(mins *60);
}
function pause() { 
  if( flagTimer=='resume')
  {
    clearTimeout(t);
    t=0;alert(' 12c  ya');
    document.getElementById('Pause').value="Resume";
    flagTimer='pause';
  }
  else
  {
    flagTimer='resume';
    document.getElementById('Pause').value="Pause";
    resume();
  }

}
function resume() {
    t= setTimeout('Decrement()',1000);
}

</script>
</head>
<body>
    <div id="timer">
        <input id="minutes"  style="width: 24px; border: none; background-color:none;">mts
        <input id="seconds"  style="width: 26px; border: none; background-color:none;"/>second
        <div id="timer">
            <input type="button" id="Pause" value="Pause" onClick="pause();" />
        </div>
    </div>
    <script>
        countdown();
    </script>
</body>
</html>

倒计时
暂停=错误;
//设定分钟数
var mins=30;
//计算秒数
var secs=分钟*60;
var t=0;
var flagTimer='resume';
函数倒计时(){
t=设置超时('Decrement()',1000);
}
函数减量(){
if(document.getElementById){
分钟=document.getElementById(“分钟”);
秒=document.getElementById(“秒”);
//如果剩下不到一分钟
如果(秒<59){
秒。值=秒;
}否则{
minutes.value=getminutes();
seconds.value=getseconds();
}
秒--;
t=设置超时('Decrement()',1000);
}
}
函数getminutes(){
//分是秒除以60,四舍五入
分钟=数学楼层(秒/60);
返回分钟;
}
函数getseconds(){
//从总剩余秒数中减去剩余分钟数(以秒计)
返回秒数学轮(分钟*60);
}
函数pause(){
如果(flagTimer=='resume')
{
清除超时(t);
t=0;警报('12c ya');
document.getElementById('Pause').value=“Resume”;
flagTimer='pause';
}
其他的
{
flagTimer='resume';
document.getElementById('Pause').value=“Pause”;
恢复();
}
}
功能恢复(){
t=设置超时('Decrement()',1000);
}
mts
第二
倒计时();
现场测试


Fiddle

在js Fiddle中分享你的结果。我会帮助你的!执行
setTimeout()
时,请向其传递函数,而不是字符串。例如,
setTimeout('Decrement()',1000)可以写为
setTimeout(减量,1000)
<html>
<head>
<title>Countdown</title>
<script type="text/javascript">
paused = false;
// set minutes
var mins = 30;
// calculate the seconds 
var secs = mins * 60;
var t=0;
  var flagTimer='resume';
function countdown() {
    t = setTimeout('Decrement()',1000);
}
function Decrement() {
    if (document.getElementById) {
        minutes = document.getElementById("minutes");
        seconds = document.getElementById("seconds");
        // if less than a minute remaining
        if (seconds < 59) {
            seconds.value = secs;
        } else {
            minutes.value = getminutes();
            seconds.value = getseconds();
        }
        secs--;
        t= setTimeout('Decrement()',1000);
    }
}
function getminutes() {
    // minutes is seconds divided by 60, rounded down
    mins = Math.floor(secs / 60);
    return mins;
}
function getseconds() {
    // take mins remaining (as seconds) away from total seconds remaining
    return secs-Math.round(mins *60);
}
function pause() { 
  if( flagTimer=='resume')
  {
    clearTimeout(t);
    t=0;alert(' 12c  ya');
    document.getElementById('Pause').value="Resume";
    flagTimer='pause';
  }
  else
  {
    flagTimer='resume';
    document.getElementById('Pause').value="Pause";
    resume();
  }

}
function resume() {
    t= setTimeout('Decrement()',1000);
}

</script>
</head>
<body>
    <div id="timer">
        <input id="minutes"  style="width: 24px; border: none; background-color:none;">mts
        <input id="seconds"  style="width: 26px; border: none; background-color:none;"/>second
        <div id="timer">
            <input type="button" id="Pause" value="Pause" onClick="pause();" />
        </div>
    </div>
    <script>
        countdown();
    </script>
</body>
</html>