首页 > 解决方案 > 为什么 clearInterval 不清除我的间隔?

问题描述

所以我使用的是 Javascript 间隔,出于某种原因,清除间隔不起作用。这个错误只发生在我在有计时器的页面上时,我按下后退按钮(返回上一页)然后我再次进入这个页面。

这是我的计时器:

var timeleft = 6;
var gameTimer = setInterval(function(){
    timeleft--; 
    afficherChaine("Le jeu va commencer dans " + timeleft + " secondes !"); //Just prints something at the screen for the user
    console.log("First");
    if(timeleft <= 0){
        clearInterval(gameTimer);
        console.log("Second");
        jouer();
    }
},1000);

当我使用后退按钮返回上一页,然后回到这里时,两个计时器都会运行,并且计时器永远不会停止,而是jouer()会执行。但计时器并没有停止。

这是我不触发错误时的日志:

First
Second

然后在我触发它之后:

First
Second
First
Second
First
Second
First
Second
...

它从不停止

编辑:显然这是题外话,我真的不明白为什么。我想我需要说一下代码应该做什么。

该代码有效,但返回上一页并再次继续这一页会产生一个带有 2 个计时器的错误,即使我之前清除了计时器。它不应该那样做。

编辑(再次):首先,感谢您的帮助。然后,这是一段创建错误的代码:

var timeleft = 6;
var gameTimer = setInterval(function(){
    timeleft--; 
    afficherChaine("Le jeu va commencer dans " + timeleft + " secondes !"); //Just prints something at the screen for the user
    console.log("First");
    if(timeleft <= 0){
        clearInterval(gameTimer);
        console.log("Second");
    }
},1000);

我尝试不调用方法 jouer(),但错误仍然存​​在。此外,该错误仅在您按下后退按钮(或任何名称)并再次进入此页面时出现

和 affcherChaine :

function afficherChaine(message){ 
    affichageChaine.textContent = message;
}

标签: javascript

解决方案


推荐阅读