0
我试图确定键入时按下了多长时间。功能只在我输入时运行
这里是我的javascript:
var keyDownTimer = 0;
var keyUpTimer = 0;
var keyPressedCounter = 0;
var dt;
var keyDownDisplay = document.getElementById("keyDownTimer");
var keyPressedDisplay = document.getElementById("keyPressed");
keyDownDisplay.innerHTML = keyDownTimer;
keyPressedDisplay.innerHTML = keyPressedCounter;
function keypressed(){
keyPressedCounter++;
keyPressedDisplay.innerHTML = keyPressedCounter;
}
function keydown(){
dt = setInterval(addDownTime, 1);
}
function addDownTime(){
keyDownTimer++;
keyDownDisplay.innerHTML = keyDownTimer/1000;
}
function keyup(){
clearInterval(dt);
}
和我的HTML
<style>
div{
height:25px;
width:100px;
display:inline-block;
margin-right:10px;
}
</style>
</head>
<body>
<div id="keyUpTimer"></div><div id="keyDownTimer"></div><div id="keyPressed"></div>
<input id="textBox" type="text" onkeyup="keyup()" onkeydown="keydown()" onkeypress="keypressed()">
,因为我在文本框中我打字,一切工作正常,但后来由于某种原因,keyDownTimer刚刚开始运行,就好像keydown()不会运行一样。 我知道我的代码有点难以阅读,但我很确定它的正确性。并且它应该正常运行。慢慢地打字似乎有助于解决问题,但它仍然运行无限。 任何帮助,将不胜感激。如果你能解释为什么它在做什么,那会很好。
会发生什么事,如果你按(住)A,然后按B,然后松开两?这种情况在快速输入时经常发生......(想想在这种情况下'dt'会发生什么!) – psmears