JavaScript记忆游戏如何在所有卡牌翻转后自动停止计时
问题原因
调用setInterval创建定时任务时没有存储返回的定时器ID,无法在游戏结束时主动终止定时任务,导致计时器持续运行。
修改步骤
- 1、在全局变量声明区域新增定时器ID存储变量,可放在
matchCounter变量声明之后:
let matchCounter=0; let timerInterval = null; // 新增这行
- 2、修改
time函数中的setInterval调用逻辑,将返回的定时器ID存入全局变量:
原代码:
setInterval(setTime, 1000);
修改后:
timerInterval = setInterval(setTime, 1000);
- 3、在游戏结束的判断逻辑中添加清除定时器的代码,找到
checkForMatch函数内匹配完成弹SweetAlert的部分,新增清除逻辑:
原代码:
if(matchCounter==(cards.length/2)){ Swal.fire({ title: 'Congratualtions!!!', text: 'You finish the game. Thank you for playng.' , }) }
修改后:
if(matchCounter==(cards.length/2)){ clearInterval(timerInterval); // 新增这行清除定时任务 Swal.fire({ title: 'Congratualtions!!!', text: 'You finish the game. Thank you for playng.' , }) }
修改完成后,所有卡牌匹配完成时计时器会自动停止在当前时间,不会继续计数。
内容的提问来源于stack exchange,提问作者Vasco Wayne
相关产品推荐
相关产品推荐

