我如何才能使此计时器从点击开始而不是在页面加载开始?

时间:2018-10-08 00:21:01

标签: javascript jquery

我的代码位于https://codepen.io/tb0217/pen/wYzMBe。我需要使这个时间从单击卡开始,并停止打开多个计时器。每次单击新卡时,当我将启动计时器功能置于click事件中时,它将添加计时器并快速运行。当在模态函数中单击“是”按钮时,我还需要有关重置此计时器的帮助。有人可以解释一下吗?

var sec = 0;

function startTime(val) { return val > 9 ? val : "0" + val; }
var timer = setInterval(function() {
  $("#seconds").html(startTime(++sec % 60));
  $("#minutes").html(startTime(parseInt(sec / 60, 10)));
}, 1000);

2 个答案:

答案 0 :(得分:0)

检出此https://codepen.io/anon/pen/OBbRoj笔。我进行了一些更改,以重置计时器,并在单击框时启动。

if(!isStarted){
   timer = setInterval(function() {
      $("#seconds").html(startTime(++sec % 60));
      $("#minutes").html(startTime(parseInt(sec / 60, 10)));
   }, 1000);
   isStarted = true;
}


function resetTimer(){
   sec = 0;
   $("#seconds").html(startTime(0 % 60));
   $("#minutes").html(startTime(parseInt(0 / 60, 10)));
   startTime();
   isStarted = false;
}

您还需要将resetTimer()添加为onclick按钮的yes

<button id="yesBtn" onclick="resetTimer();">Yes</button>

答案 1 :(得分:0)

您可以使用one()一次添加事件侦听器,触发后将删除该侦听器。

function addTimer(){
    $(".deck").one("click",".card",()=>{
         // your timer function here.
    })
}

然后在窗口的加载事件和yes按钮的click事件中使用它。