Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:在单击按钮之前阻止setInterval函数运行_Javascript_Setinterval - Fatal编程技术网

JavaScript:在单击按钮之前阻止setInterval函数运行

JavaScript:在单击按钮之前阻止setInterval函数运行,javascript,setinterval,Javascript,Setinterval,新的JS。我试图在我的页面上添加一个按钮,上面写着“开始游戏”。单击时,开始执行倒计时功能,将按钮上的文本从每秒10次向下更改为0次,此时按钮将显示“时间到了!” 我使用了setInterval方法让倒计时计时器工作,但它会在页面加载后立即开始运行(运行下面的代码片段以查看实际情况) 我试图阻止它运行,直到点击按钮。这是我的html按钮(带有属性onclick=“startTimer()”)和JS: var timeleft=10 var gameTimer=设置间隔(起始时间,1000);

新的JS。我试图在我的页面上添加一个按钮,上面写着“开始游戏”。单击时,开始执行倒计时功能,将按钮上的文本从每秒10次向下更改为0次,此时按钮将显示“时间到了!”

我使用了
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不再启动计时器,但我只是出于懒惰而保留了所有原始函数名>_