각 키 입력 사이의 시간을 기록하고 싶습니다 ('A'키로 시작). 밀리 초 단위로 입력하십시오. 사용자가 자신의 일을 마친 후에는 각 키 획 사이의 시간을 제출하고 체크 아웃 할 수 있습니다. 같은자바 스크립트 레코드 키 입력 시간
는1 : 500 2 : 300 3 : 400 4 : 500 5 : 50 7 : 50 8 : 100 6 25 I이 자바 스크립트 가능 판단
인 그것?
각 키 입력 사이의 시간을 기록하고 싶습니다 ('A'키로 시작). 밀리 초 단위로 입력하십시오. 사용자가 자신의 일을 마친 후에는 각 키 획 사이의 시간을 제출하고 체크 아웃 할 수 있습니다. 같은자바 스크립트 레코드 키 입력 시간
는1 : 500 2 : 300 3 : 400 4 : 500 5 : 50 7 : 50 8 : 100 6 25 I이 자바 스크립트 가능 판단
인 그것?
물론 : 나는 당신이 나중에 원하는 경우에 대비 키 코드를 추가
var times = [];
// add an object with keycode and timestamp
$(document).keyup(function(evt) {
times.push({"timestamp":evt.timeStamp,
"keycode":evt.which})
});
// call this to get the string
function reportTimes() {
var reportString = "";
for(var i = 0; i < times.length - 1; ++i) {
reportString += (i+1) + ": " + (times[i+1].timestamp - times[i].timestamp) + " ";
}
return reportString; // add this somewhere or alert it
}
; 정확한 문제 진술에 반드시 필요한 것은 아닙니다. 댓글 토론에서
명확화 :
for
루프는 최대 (i
항상 엄격하게 적은 times.length - 1
보다가 있기 때문에) 정도의 범위를 벗어난 것으로 times[i+1]
에 대한 아무런 문제가 없다 times.length - 2
에 간다 배열 4
-i
설정하는 종료 조건을 유발하기 때문에,
1st pass: times[1].timestamp - times[0].timestamp
2nd pass: times[2].timestamp - times[1].timestamp
3rd pass: times[3].timestamp - times[2].timestamp
4th pass: times[4].timestamp - times[3].timestamp
이어서 루프가 종료 : 다섯 개 개의 키 입력을 수행하고 예를 들어, 따라서 (0
에서 4
연동) 다섯 개 요소와 times
배열을
= i < times.length - 1
= 4 < 5 - 1
= 4 < 4
= false [i cannot be set to 4 by this loop]
따라서 i
은 최대 색인보다 1 개 작기 때문에 times[i+1]
은 항상 유효하게 색인 된 요소입니다.
얼마나 정확한 타이밍이 필요합니까? http://ejohn.org/blog/accuracy-of-javascript-time/ – Brad
약 5 밀리 초. 개인 용도로만 사용할 수 있으므로 모든 종류의 브라우저를 지원할 필요는 없습니다. –
[무엇을 시도해 봤습니까?] (http://whathaveyoutried.com) – veeTrain