我真的很感激,如果有人可以帮助我,我已经坚持了几天这个问题,谷歌和其他stackoverflow答案似乎没有帮助。
我有一个带有模拟时钟的网络应用程序,从我需要的时钟能够获得用户按下键盘的时间并将其与输入的时间进行比较,我可以得到他们通过时间输入的时间但是我无法理解如何获得实际的按键时间。
为了确保我在正确的轨道上,我能够在每个任务页面中放入一个for循环,例如:
var i = 0;
for (i = 0; i < 40; i ++){
//Add user input from form into an array
//Add actual key press time in an array
//Show next task link after the 40 trials are complete
document.getElementById('nextTask').style.visibility="visible";
document.getElementById('nextTask').style.display="block";
}
共有120项试验,共分3个任务。
其中1个没有声音。
另外2个有声音,但只有50%和75%的时间会发出哔哔声,有时则不会......(我仍然在那部分挣扎......但我会解决后来的问题。)
最后一点,我能够仅使用一个网页运行40个试验,或者我是否必须为整个任务创建40个X 3个单独的页面。
我创建了一个JSFiddle,我对整个想法仍然不熟悉,所以如果我犯了错误,请告诉我。 http://jsfiddle.net/StrangeLondoner/ymXeG/
时钟在一个随机的毫秒数后停止,按下的两个键是s和k。
我想感谢您抽出时间阅读这个问题,并希望能帮我找到解决方案。
完成
嘿伙计们,谢谢你们的意见。我想我会让你们知道我做了什么,如果有人在寻找类似的答案。它可能有点原始,但我创建了一个相同的计数器,并与时钟同时运行,我知道这是不理想的性能,但我想这将不得不做,直到我想出一个更好的解决方案。我想以某种方式让它工作。非常感谢。如果我能以某种方式找到更好的解决方案,我会更新。
答案 0 :(得分:1)
获取系统时钟并根据时钟指示进行匹配。它将是最准确的,因为您的时钟可能会滞后于系统负载。 (当然,也可以尝试按键,但至少可以减少损坏。)
Javascript是一种糟糕的实时处理语言。
答案 1 :(得分:1)
我会尝试这一点jQuery。它可能对你正在做的事情有用。
$(document).keydown(function(f){
if (f.keycode == 83 || f.keycode == 75) //key codes for s and k
{
var d = new Date();
var n = d.getTime(); // n now equals the number of milliseconds since January 1, 1970;
}
doSomethingWithTheTime(n); //Here you would call a function to store or compare your time.
return false;
});