【问题标题】:Resetting elapsed time and setInterval in jquery?在jquery中重置经过时间和setInterval?
【发布时间】:2014-03-20 21:12:40
【问题描述】:

我已经完成了这段代码并且接近了我想要的,但是缺少两个小细节。该函数测量两个事件之间经过的时间,并在运行 3 次后停止。

我希望在每次按键事件后重置时间。在我的研究中,我发现了这个问题:Mesure a Reaction Time in ms on a JSP webpage,但这对重置没有太大帮助。

我还想在没有按键时每 2 秒自动更改一次 div 的文本,然后获得 2000 的经过时间。

这在某种程度上是可能的吗?我试过 setInterval 但没有成功。

var t1;
var counter=0;
var teststim = ["AAA", "BBB", "CCC", "DDD"];

$(function(){
    t1 = (new Date()).getTime();
    $(document).keypress(function(e){
        var t2 = (new Date()).getTime();
        var reac = t2 - t1;
        counter++;
        if (e.keyCode == 97 || e.keyCode == 108) {
            $("#stimuli").text(teststim[Math.floor(Math.random() * teststim.length)]);
        };
        if (counter == 3) {
            confirm("It's over!");
        }
    });
});

【问题讨论】:

  • "每 2 秒自动"... 尝试使用 setInterval ?
  • setInterval 对我来说似乎是正确的。每 2 秒调用一次该函数,如果按下某个键,则清除计时器并将其重置为 2 秒。

标签: javascript jquery time reset


【解决方案1】:

这不衡量反应时间,但它是setInterval / clearInterval 的一个工作示例。

updateText = function(){
    $("body").append( $("<p></p>").html(Date()))
}
timer = setInterval( updateText, 2000 )
$(document).keypress(function(){
    clearInterval( timer)
         $("body").append( $("<p></p>").html("Keypress at " + Date() ))
    timer = setInterval( updateText, 2000 )

})

http://jsfiddle.net/KHaaL/

【讨论】:

  • 谢谢。这很棒。知道我应该在哪里调用我的计数器吗?转移到您的示例,我想计算屏幕上“日期打印”的数量,无论它是按键感应还是间隔。这将使我的一天......
  • 我自己修复了计数器:只是为常规跑步和关键事件制作了单独的计数器。这行得通。还是谢谢。
【解决方案2】:

测量反应时间后,将t1 设置为当前时间。

var reac = t2 - t1;
t1 = t2;

【讨论】:

    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    相关资源
    最近更新 更多