我希望用户能够单击向上箭头5次,并且每次记录单独的startTime和endTime。因此,控制台将返回它们响应的速度(msResponse)。
for (var i = 0; i < 5; i++) {
var startTime = new Date().getTime();
document.addEventListener("keydown", function touch(e) {
switch (e.keyCode) {
case 38:
var endTime = new Date().getTime();
var msResponse = endTime - startTime;
console.log(msResponse);
document.removeEventListener("keydown", touch);
break;
}
})};
我期待循环会提示我5次点击向上箭头。每次设置一个新的startTime和endTime。
但是,第一次单击向上箭头时,它会循环5次,每次循环迭代时,msResponse会略微增加。
如果有人能帮助我更好地理解这一点,那就太棒了!
非常感谢!
答案 0 :(得分:0)
For循环用于重复和创建新变量。因为除了重复代码之外不使用for循环,它最终看起来像这样:
var startTime = new Date().getTime();
document.addEventListener("keydown", function touch(e) {
switch (e.keyCode) {
case 38:
var endTime = new Date().getTime();
var msResponse = endTime - startTime;
console.log(msResponse);
document.removeEventListener("keydown", touch);
break;
}
})};
/*Main problem you mentioned in your question was that time is only increasing ever so slightly. You are reassigning startTime = new Date() in your second iteration.*/
var startTime = new Date().getTime();
document.addEventListener("keydown", function touch(e) {
switch (e.keyCode) {
case 38:
var endTime = new Date().getTime();
var msResponse = endTime - startTime;
console.log(msResponse);
document.removeEventListener("keydown", touch);
break;
}
})};
每按一次键,我都会创建一个记录时间数组,并在数组达到时取消绑定键。长度为x。
var startTime = new Date().getTime();
var endTime = [startTime];
window.addEventListener( "keydown", function touch(e) {
if(endTime[5] !== undefined){
window.removeEventListener( 'keydown', touch() );
}else if ( e.keyCode === 38 ){
var msResponses = new Date().getTime();
endTime.push(msResponses);
}
});
此代码根据时间创建一个数字数组,您可以从开头减去它们以获取自调用函数以来的时间,或者从相互之间减去它们以获得第一次按下和第二次按下,第二次和第三次之间的差异。或者其他什么。