Javascript 清除超时不工作以结束设置的超时?
我在一个对象数组上循环,每个对象显示对象中包含的时间量。我想添加“上一步”、“暂停”和“下一步”按钮。我在setTimeout函数外声明了timeID变量,以便在函数内的click事件上调用clearTimeout。Click事件正在工作,因为它将背景颜色变为绿色,但clearTimeout(timeID)不是 下面是它的截图Javascript 清除超时不工作以结束设置的超时?,javascript,cleartimeout,Javascript,Cleartimeout,我在一个对象数组上循环,每个对象显示对象中包含的时间量。我想添加“上一步”、“暂停”和“下一步”按钮。我在setTimeout函数外声明了timeID变量,以便在函数内的click事件上调用clearTimeout。Click事件正在工作,因为它将背景颜色变为绿色,但clearTimeout(timeID)不是 下面是它的截图 函数generateWorkout(){ 让startButton=document.getElementById(“startButton”); //单击“开始”按钮
函数generateWorkout(){
让startButton=document.getElementById(“startButton”);
//单击“开始”按钮以循环浏览当前电子设备
startButton.onclick=函数(){
var source3=document.getElementById(“runDownHandle”).innerHTML;
var template3=handlebar.compile(source3);
var编译HTML3;
//循环查看CurrentPhase练习中的练习数
循环1:
for(设i=0;i
currentPhaseExercises.length有多长?您正在以下位置创建超时:
for (let i = 0; i < currentPhaseExercises.length; i++) {
for(设i=0;i
循环,所以您正在进行一系列超时,而不仅仅是一次。以下简单代码举例说明了问题:
var超时;
函数go(){
对于(变量i=0;i<5;i++){
timeout=setTimeout(函数(){
console.log(“Running”);
},i*1000);
}
}
函数停止(){
clearTimeout(超时);
}
go();
停止()
将var-timeID
更改为let-timeID
怎么样?这很奇怪。虽然我同意let
是一个更好的选择,但从我所知道的设置方式来看,这并不重要。你能在onclick函数中放置一个timeID的控制台日志,看看它是否报告,例如,所有用户的数字都相同吗或者它是否正确地以不同的方式输出?在我更改var之前,让onClick函数中的console.log for timeID报告7(数组中的对象数)每次。在我将var更改为let之后,当我在onClick函数中console.log timeID时,它会根据显示的练习递增报告一个数字1-7。我的答案令人满意吗?如果是,请用接受的复选标记和upvote标记一个。谢谢!
for (let i = 0; i < currentPhaseExercises.length; i++) {