javascript定时器在第一次按键时启动
我有一个带有计时器的html页面。我用按键事件启动计时器,但我希望它只对第一个键执行。我使用一个变量来捕捉其他函数中按下的总键数,我有这样的结果:javascript定时器在第一次按键时启动,javascript,html,Javascript,Html,我有一个带有计时器的html页面。我用按键事件启动计时器,但我希望它只对第一个键执行。我使用一个变量来捕捉其他函数中按下的总键数,我有这样的结果:if(totaAttempts==1)启动计时器,但是使用这个解决方案,计时器可以正确启动,但是当再次按下某个键时,计时器会被踩下。还有更好的主意吗? 提前谢谢 function setTime() { if (totalAttempts == 1) { ++totalSeconds; secondsLabel.
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;
}
}
函数设置时间(){
如果(总尝试次数==1){
++总秒数;
secondsLabel.innerHTML=pad(总秒数%60);
minutesLabel.innerHTML=pad(parseInt(totalSeconds/60));
}
}
功能板(val){
var valString=val+“”;
如果(valString.length<2){
返回“0”+valString;
}否则{
返回valString;
}
}
添加一个名为(类似“started”的变量)
最初设置为0
按键时,将其设置为1
使用:
代替
if (totalAttempts == 1) {
... timer ...
}
应该可以了 创建一个标志变量,例如
var hasRan
。将其初始化为false
,然后在运行时将其设置为true
。并使用if(!hasRan){…
包装函数内部。然后在keyUp
事件中将hasRan
变量设置为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;
}
}
var hasStarted=false;
element.onkeypress=函数(){
如果(!hasStarted){
设置超时(设置时间,1000);
hasStarted=true;
}
}
element.onblur=函数(){
hasStarted=false;
}
函数setTime(){
++总秒数;
secondsLabel.innerHTML=pad(总秒数%60);
minutesLabel.innerHTML=pad(parseInt(totalSeconds/60));
hasStarted=false;
}
功能板(val){
var valString=val+“”;
如果(valString.length<2){
返回“0”+valString;
}否则{
返回valString;
}
}
你能展示一些代码吗?你如何调用这些函数?我在一次按键事件中调用函数setTime。我已经尝试过了,解决方案是创建多个计时器,我按的每个字母一个。粘贴整个代码块,这样我就可以获得完整的图片。它可以创建多个计时器,而不再需要更多要查看的代码,这里没有太多内容。xmmm它不起作用。计时器在第一个键上启动,但在一秒钟后停止。在开始增加变量“totalseconds”之前,您是否设置了变量“totalseconds”?在setTime()函数之外?是的,在我设置的函数之外。在按下另一个键之前,计时器工作正常
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;
}
}