javascript - 如何减少setTimeOut中 'current'的时间?

标签 javascript

如何减少 setTimeOut 中的“当前”时间?例如,我有一个从 100 秒开始的倒计时,40 秒后(因此在 60 秒)我单击一个按钮,它会立即减少到 50 秒(-10 秒)。

下面示例中的链接将在 100 秒后启用。基本上,我正在寻找一种方法,可以在每次按下按钮时从倒计时(当前位置)减少 10 秒。

function enableLink() {
    setTimeout('enableAnchor( "anchor0", "mylink.php" )', 100000);
}

如果这是不可能的,是否有任何语言或库(也许是 JQuery 或 AJAX?)可以让我做到这一点?

最佳答案

不要将计时器值用于任何实际逻辑,而是手动完成:

var msLeft = 100000,
    prev = new Date();

     //This timer is simply polling how much time has passed using accurate methods and reduces it accordingly from msLeft 
var timerId = window.setInterval( function() {
    var cur = new Date(),
        progress = cur - prev;

    prev = cur;
    msLeft -= progress;

    if( msLeft <= 0 ) {
        window.clearInterval(timerId);
        counteddown();
    }
}, 50 ); 

document.onclick = function() {
    msLeft -= 10000; //Each click reduces 10 seconds from the countdown
};

document.onkeyup = function() {
    msLeft += 10000; //Each keyup adds 10 seconds to the countdown
};

jsfiddle 演示 http://jsfiddle.net/JgzZQ/2/

关于javascript - 如何减少setTimeOut中 'current'的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432868/

相关文章:

javascript - 尝试使用 Array.prototype.filter 访问嵌套对象字段时出现未定义错误

javascript - 当我只更改一个子值时,如何停止重新渲染 React 渲染函数中的所有子项?

javascript - 在核心 php 中,我需要在数据库中添加的编辑字段中查看图像

javascript - 如何在JavaScript字符串replace(...)方法的第二个参数中引用搜索值?

javascript - 递归包括Sequelize?

javascript - 如何通过 JavaScript 选择一行的单元格并获取它们的值?

javascript - 如何知道何时应用了 font-face

java - Easy ui 1.3.5 - 内部带有数据网格的对话框未加载

javascript - 'mousedown' 的 addEventListener 与 'click' 的 addEventListener 不同

javascript - 禁用与原型(prototype)观察方法的链接