【发布时间】:2019-01-10 10:41:25
【问题描述】:
我不太确定如何解决这个问题,因为我不明白我做错了什么 - 所以,每次我点击创建的“开始”按钮时,都会触发一个 setInterval:
$("#questBox").on("click", "#startQuestButton", function(){
document.getElementById("startQuestButton").classList.add("hidden");
var requiredTime = 10000;
var timer = 0;
var interval = setInterval(function(){
if(timer>requiredTime){
clearInterval(interval)
document.getElementById("startQuestButton").classList.remove("hidden");
}
timer+=1000;
}, 1000);
}
startQuestButton 是一个 div,存在于我的 html 文件中:
<div id="startQuestButton"></div>
现在,当我第二次点击开始按钮时,会触发 2 个相同的 setIntervals,第三次点击 3 个,依此类推。 我什至尝试在单击开始按钮之前和之后将间隔设置为空。此外,只要间隔正在进行,开始按钮就会隐藏。我想完全破坏前一个间隔,以便在我按下开始按钮时只触发一个。 我需要 setInterval 来显示一个进度条,它模仿一个加载条(因此,每秒钟,彩色元素的宽度都会放大几个像素)。
【问题讨论】:
-
停止和清除间隔是一回事——我认为问题出在开始间隔的按钮上,所以你必须显示代码。
-
您能否提供更多源代码以及任何相关的 HTML?没有提供足够的信息来提供合适的答案。
-
你能用codepen或jsbin演示你的代码吗?所以很清楚
-
听起来你只需在点击开始按钮时调用
clearInterval()之前调用setInterval()。 -
我添加了html按钮代码和onclick功能。我在很多地方都调用了 clearInterval(),但它从未改变任何东西。