使用javascript在单击时重置计时器

使用javascript在单击时重置计时器,javascript,jquery,Javascript,Jquery,我有这个JS代码: <script> $(document).ready(function () { window.setTimeout(function () { $('#logout_warning').reveal(); }, 6000) }); $(document).ready(function () { window.setTimeout(function () { location.href = "/login/l

我有这个JS代码:

<script>
$(document).ready(function () {
    window.setTimeout(function () {
        $('#logout_warning').reveal();
    }, 6000)
});
$(document).ready(function () {
    window.setTimeout(function () {
        location.href = "/login/logout.php?url=/index.php?r=inactivity";
    }, 12000)
});
</script>

$(文档).ready(函数(){
setTimeout(函数(){
$('#注销\警告')。显示();
}, 6000)
});
$(文档).ready(函数(){
setTimeout(函数(){
location.href=“/login/logout.php?url=/index.php?r=不活动”;
}, 12000)
});
它在X秒后显示一个DIV,然后在Y秒后重定向页面


有没有一种方法可以创建一个链接,将计时器重置回X秒,而不必刷新页面?

您可以像这样为
setTimeout
编写一个包装器

function myTimeout(fn, delay) {
    var o = {i: null};
    o.cancel = function () {
        if (o.i) window.clearTimeout(o.i);
    };
    o.reset = function () {
        if (o.i) window.clearTimeout(o.i);
        o.i = window.setTimeout(fn, delay);
    };
    o.reset();
    return o;
}
然后


您需要将
clearTimeout()
绑定到锚元素的单击,以重置第一个
setTimeout
// common (ancestor?) scope
var t;

// descendant scope, set
t = myTimeout(function () {
    $('#logout_warning').reveal();
}, 6000);

// descendant scope where you attach listener to your link
$('#my_link').on('click', function () {
    t.reset(); // re-start the timeout
    return false;
});