javascript - 为什么 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;
}
解决方案
推荐阅读
- scala - 我正在尝试从 s3 存储桶加载数据,但我无法加载
- java - 在 Firebase 数据库 Android Java 中写入新的整数数据
- node.js - 如何使用 VSCode 在 docker-compose 中调试运行 Typescript 的 Node.js 应用程序?
- javascript - 将两种方法重构为一种 - Javascript
- prolog - Prolog 语义和继承
- java - Google Drive API 提供的上传文件权限不足
- twig - 如何使用 Timber & ACF 显示特定的相关帖子?
- swift - 如何在 RealityKit 中隐藏 ModelEntity?
- git - 仅使用终端创建一个 git-repo
- java - 生成的 servlet 错误:-source 1.5 不支持默认方法(使用 -source 8 或更高版本启用默认方法)