javascript - 使用 onclick 事件停止 javascript 倒数计时器

标签 javascript timer countdown

我需要帮助,我为带进度条的倒数计时器制作了一个 javascript 函数,这是代码

function progress(timeleft, timetotal, $element) {
    var progressBarWidth = timeleft * $element.width() / timetotal;
    $element.find('div').animate({ width: progressBarWidth }, timeleft == timetotal ? 0 : 1000, 'linear').html('');
        $('#time_wrap').html('<span id="timer">'+timeleft+'</span>');
    if(timeleft > 0) {
        setTimeout(function() {
            progress(timeleft - 1, timetotal, $element);
        }, 1000);
    }else{
            setTimeout(function() {
            submitdata();
        }, 1000);
        }
    };

我需要用 onclick 事件停止计时器,例如:<input type="button" onclick="stoptimer();">

如何使用函数 stoptimer() 停止定时器?

最佳答案

您要找的是clearTimeout .

您可以将代码修改为:

var timer = null;

function progress(timeleft, timetotal, $element) {
    var progressBarWidth = timeleft * $element.width() / timetotal;
    $element.find('div').animate({ width: progressBarWidth }, timeleft == timetotal ? 0 : 1000, 'linear').html('');
        $('#time_wrap').html('<span id="timer">'+timeleft+'</span>');
    if(timeleft > 0) {
        timer = setTimeout(function() {
            progress(timeleft - 1, timetotal, $element);
        }, 1000);
    } else{
        timer = setTimeout(function() {
            submitdata();
        }, 1000);
    }

    // You can use this to bind event only after the timer is set.
    // $('#stop-btn').on('click', function() { 
    //    clearTimeout(timer);
    // });
};

function stoptimer() {
    clearTimeout(timer);
}

关于javascript - 使用 onclick 事件停止 javascript 倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27221205/

相关文章:

javascript - 如何在 Firefox 中获取带零的数字输入的完整值

c# - 进度条和计时器

用户空间和共享变量中的 Linux 计时器

java - 方形不在我的 Swing 应用程序中旋转

php - 通过存储在数据库中的日期/时间使倒数计时器在多个浏览器之间保持同步

javascript - React,react.children + react.cloneElement 在使用扩展运算符时中断

javascript - ReactJS 组件的 OnChange 事件未在 IE 11 上触发

javascript - 为什么我的倒数计时器不启动和停止?

android - 倒数计时器不显示剩余天数

javascript - 尝试加载第一张图像时 FlexSlider 图像失真/跳跃?