我有一个带有计时器的html页面。我正在使用按键事件启动计时器,但我希望它仅针对第一个键执行。我正在使用一个变量来捕获另一个按下的函数中的总键,我有类似的东西:if(totaAttempts==1)
启动计时器,但是使用这个解决方案,计时器正确启动,但是当一个键时它会踩踏再次按下。有更好的想法吗?
提前致谢
function setTime() {
if (totalAttempts == 1) {
++totalSeconds;
secondsLabel.innerHTML = pad(totalSeconds % 60);
minutesLabel.innerHTML = pad(parseInt(totalSeconds / 60));
}
}
function pad(val) {
var valString = val + "";
if (valString.length < 2) {
return "0" + valString;
} else {
return valString;
}
}
答案 0 :(得分:0)
添加一个名为(类似)'start'的变量。
最初设为0。
按键,将其设为1.
使用:
if( start == 0){
... timer ...
}
取代
if (totalAttempts == 1) {
... timer ...
}
应该这样做。 。
答案 1 :(得分:0)
创建一个标志变量,例如var hasRan
。将其初始化为false
,然后在运行时将其设置为true
。并用if(!hasRan) {...
包裹函数的内部。然后在hasRan
事件上将keyUp
变量设置为false。
编辑:
这是你的意思吗?var hasStarted = false;
element.onkeypress = function() {
if(!hasStarted) {
setTimeout(setTime, 1000);
hasStarted = true;
}
}
element.onblur = function() {
hasStarted = false;
}
function setTime() {
++totalSeconds;
secondsLabel.innerHTML = pad(totalSeconds % 60);
minutesLabel.innerHTML = pad(parseInt(totalSeconds / 60));
hasStarted = false;
}
function pad(val) {
var valString = val + "";
if (valString.length < 2) {
return "0" + valString;
} else {
return valString;
}
}