Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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_Clearinterval - Fatal编程技术网

Javascript 声明为全局时setInterval不工作

Javascript 声明为全局时setInterval不工作,javascript,setinterval,clearinterval,Javascript,Setinterval,Clearinterval,我有3个全局声明的setInterval函数,其中2个在工作,另一个不管我做什么都不工作。我使用一个单独的函数来清除间隔(函数ClearintervalTime()),它在stopGame()中调用 无论我做什么,这段代码都不起作用,唯一能让它起作用的方法是在gameDuration()中本地声明clearGameInterval1,然后在闭包函数gameDurationCounter()中用注释行将其关闭。 我有一个停止游戏的按钮,我不仅想在计数器达到0时关闭间隔,还想在按钮上单击。 如果我保

我有3个全局声明的setInterval函数,其中2个在工作,另一个不管我做什么都不工作。我使用一个单独的函数来清除间隔(函数ClearintervalTime()),它在stopGame()中调用

无论我做什么,这段代码都不起作用,唯一能让它起作用的方法是在gameDuration()中本地声明clearGameInterval1,然后在闭包函数gameDurationCounter()中用注释行将其关闭。 我有一个停止游戏的按钮,我不仅想在计数器达到0时关闭间隔,还想在按钮上单击。
如果我保留上面列出的代码,计数器甚至不会启动,如果我注释掉clearInterval(clearGameInterval1);在ClearintervalTime()中,计数器将启动,但我无法停止/清除它。。。我要发疯了,想办法解决这个问题。没有其他具有相同名称的变量或函数,我已尝试在外部(而不是在闭包中)获取gameDurationCounter()的相同效果。有人能告诉我发生了什么事,出了什么问题吗?

在这个问题上花了两天多的时间后,我终于发现了错误..这全是我:(.我在开始游戏,还有游戏计数器 StartName()中的gameDuration()

}); 在difficultyLevel(bubbleSpawnInterval)中,我清除了所有3个间隔,但我在同一个函数中设置了其他2个(正在工作),而计数器间隔仍然被清除……我只需将gameDuration()函数放在difficultyLevel(bubbleSpawnInterval)之后,就可以工作了

function startGame(bubbleSpawnInterval) {
    if (!bubbleSpawnInterval) {
        alert('Please select a difficulty!');
    } else {
        initializingVariavles();
        loop();
        randomTimers(bubbleSpawnInterval);
        difficultyLevel(bubbleSpawnInterval);
        gameDuration();
    };
};

那么如何调用
gameDuration
呢?如果你一直调用该函数而没有先清除间隔,它会不断地向全局添加一个新的间隔,而旧间隔的处理程序会丢失,并且无法再清除。你是否有多个游戏同时运行,或者一次只能运行一个游戏?这个问题可能会出现如果您想提供一个可以运行并再现问题的代码段,请更清楚。将clearGameInterval1设置为0,并在单击“开始”按钮时调用checkgameDuration,该按钮上附加了此函数单击:函数StartName(BubblesPawInInterval){if(!BubblesPawInInterval){alert('请选择难度!')}else{initializingVariavles();gameDuration();loop();随机计时器(bubbleSpawnInterval);困难级别(bubbleSpawnInterval);};}
function startGame(bubbleSpawnInterval) {
if (!bubbleSpawnInterval) {
    alert('Please select a difficulty!');
} else {
    initializingVariavles();
    loop();
    gameDuration();
    randomTimers(bubbleSpawnInterval);
    difficultyLevel(bubbleSpawnInterval);

};
function startGame(bubbleSpawnInterval) {
    if (!bubbleSpawnInterval) {
        alert('Please select a difficulty!');
    } else {
        initializingVariavles();
        loop();
        randomTimers(bubbleSpawnInterval);
        difficultyLevel(bubbleSpawnInterval);
        gameDuration();
    };
};