首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何推演/播放setTimeout函数

如何推演/播放setTimeout函数
EN

Stack Overflow用户
提问于 2014-06-23 11:00:30
回答 3查看 964关注 0票数 5

我想给钟表看一些不同的东西。下面给出的代码对我来说很好。但我想推动和发挥,这一次,无论何时用户需要。我想推和恢复SetTimeout函数.any 1,知道怎么做吗?

代码语言:javascript
复制
$("#push").click(function () {

});

$("#play").click(function () {
    show();
});

function show() {
    var Digital = new Date();
    var time2 = Digital.getTime();
    var time1 = 1403517957984;
    var diff = Math.abs(new Date(time2) - new Date(time1));
    var seconds = Math.floor(diff / 1000); //ignore any left over units smaller than a second
    var minutes = Math.floor(seconds / 60);
    seconds = seconds % 60;
    var hours = Math.floor(minutes / 60);
    minutes = minutes % 60;
    if (hours < 10) hours = "0" + hours;
    if (minutes < 10) minutes = "0" + minutes;
    if (seconds < 10) seconds = "0" + seconds;
    $('#worked_time').html(hours + ":" + minutes + ":" + seconds);
    setTimeout("show()", 1000);
}
show();
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-23 11:12:17

这是“colburton”和“TwiStar”回答的混合体。

正确回答答案

代码语言:javascript
复制
var isPlaying = true;
var toHandle = null;

$("#push").click(function () {
    isPlaying = false;
    if (toHandle !== null)
    {
       clearTimeout(toHandle);
       toHandle = null;
    }
});

$("#play").click(function () {
    isPlaying = true;
    show();
});

function show() {
    if (isPlaying) {
        toHandle = null;
        var Digital = new Date();
        var time2 = Digital.getTime();
        var time1 = 1403517957984;
        var diff = Math.abs(new Date(time2) - new Date(time1));
        var seconds = Math.floor(diff / 1000); //ignore any left over units smaller than a second
        var minutes = Math.floor(seconds / 60);
        seconds = seconds % 60;
        var hours = Math.floor(minutes / 60);
        minutes = minutes % 60;
        if (hours < 10) hours = "0" + hours;
        if (minutes < 10) minutes = "0" + minutes;
        if (seconds < 10) seconds = "0" + seconds;
        $('#worked_time').html(hours + ":" + minutes + ":" + seconds);

        toHandle = setTimeout("show()", 1000);
    }
}
show();
票数 2
EN

Stack Overflow用户

发布于 2014-06-23 11:05:59

保存变量的句柄:

代码语言:javascript
复制
var toHandle = null;

// start timeout
toHandle = setTimeout("show()", 1000);

然后,您可以在任何时候取消超时:

代码语言:javascript
复制
// cancel timeout
if (toHandle) {
  clearTimeout(toHandle);
  toHandle = null;
}
票数 2
EN

Stack Overflow用户

发布于 2014-06-23 11:07:01

又快又脏。用一个if包围显示函数,它检查“我是否应该显示时间”-flag:

代码语言:javascript
复制
var doShow = true;
$("#push").click(function () {
    doShow = false;
});

$("#play").click(function () {
    doShow = true;
    show();
});

function show() {
  if(doShow == true) {


    var Digital = new Date();
    var time2 = Digital.getTime();
    var time1 = 1403517957984;
    var diff = Math.abs(new Date(time2) - new Date(time1));
    var seconds = Math.floor(diff / 1000); //ignore any left over units smaller than a second
    var minutes = Math.floor(seconds / 60);
    seconds = seconds % 60;
    var hours = Math.floor(minutes / 60);
    minutes = minutes % 60;
    if (hours < 10) hours = "0" + hours;
    if (minutes < 10) minutes = "0" + minutes;
    if (seconds < 10) seconds = "0" + seconds;
    $('#worked_time').html(hours + ":" + minutes + ":" + seconds);
    setTimeout("show()", 1000);

   }
}
show();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24364219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档