JavaScript:在单击按钮之前阻止setInterval函数运行
新的JS。我试图在我的页面上添加一个按钮,上面写着“开始游戏”。单击时,开始执行倒计时功能,将按钮上的文本从每秒10次向下更改为0次,此时按钮将显示“时间到了!” 我使用了JavaScript:在单击按钮之前阻止setInterval函数运行,javascript,setinterval,Javascript,Setinterval,新的JS。我试图在我的页面上添加一个按钮,上面写着“开始游戏”。单击时,开始执行倒计时功能,将按钮上的文本从每秒10次向下更改为0次,此时按钮将显示“时间到了!” 我使用了setInterval方法让倒计时计时器工作,但它会在页面加载后立即开始运行(运行下面的代码片段以查看实际情况) 我试图阻止它运行,直到点击按钮。这是我的html按钮(带有属性onclick=“startTimer()”)和JS: var timeleft=10 var gameTimer=设置间隔(起始时间,1000);
setInterval
方法让倒计时计时器工作,但它会在页面加载后立即开始运行(运行下面的代码片段以查看实际情况)
我试图阻止它运行,直到点击按钮。这是我的html按钮(带有属性onclick=“startTimer()”)和JS:
var timeleft=10
var gameTimer=设置间隔(起始时间,1000);
函数startTimer(){
if(timeleft这里的答案的核心是将setInterval()
的调用移动到单击按钮时调用的函数中
然而,你真的应该重新考虑一下这段代码,无论是可读性还是功能。例如,我希望startTimer()
完全按照它所说的去做-启动计时器,什么都不做。然而,这个函数似乎处理timeleft
的递减
目前,上述评论中的建议可能没有意义,因为您不想每次想减少timeleft
时都调用setInterval()
。将此功能分解为离散函数,省去您的麻烦
var timeleft=10
var游戏定时器;
函数startTimer(){
游戏计时器=设置间隔(滴答,1000);
};
函数tick(){
if(timeleft)让您附加的侦听器执行setInterval(startTimer,1000)
而不是立即调用它??在单击按钮之前不要设置Interval。因此,请将其移动到startTimer
函数中。另外,感谢您关于重构代码以使其更易于理解的建议。通常情况下,我最初让startTimer函数执行此操作,但当它不起作用时,我启动了它d四处改变,尝试不同的方法,直到startTimer不再启动计时器,但我只是出于懒惰而保留了所有原始函数名>_