Javascript 如何清理之前设置的间隔?
我有以下代码:Javascript 如何清理之前设置的间隔?,javascript,jquery,select,audio,timer,Javascript,Jquery,Select,Audio,Timer,我有以下代码: ('#hometrainerSelectIntervall').on('change', function() { // function to change intervall function changeIntervall() { elemIntervall.innerHTML = textIntervall[counterIntervall]; counterIntervall++; if (cou
('#hometrainerSelectIntervall').on('change', function() {
// function to change intervall
function changeIntervall() {
elemIntervall.innerHTML = textIntervall[counterIntervall];
counterIntervall++;
if (counterIntervall >= textIntervall.length) {
counterIntervall = 0;
}
}
// set the time to change intervall from input-data
var time = parseInt($(this).find(":selected").data("time")) * 60 * 1000;
if (this.value == 'timeWarmingUp')
{
// show/hide the corresponding boxes
$(".hometrainerIntervallMuscleAndRestday, .hometrainerIntervallBoxing").hide(100);
$(".hometrainerIntervallWarmingUp").delay(150).show(100);
// loop/set the sound
loop = setInterval(function(){$.playSound("/BETA/includes/boxing/sounds/BELL_HOMETRAINER.mp3")}, time);
// define the text for the intervalls
var textIntervall = ["<i class='fas fa-chevron-circle-up'></i> STUFE 2 <i class='fas fa-chevron-circle-up'></i> ", "<i class='fas fa-chevron-circle-down'></i> STUFE 1 <i class='fas fa-chevron-circle-down'></i>"];
var counterIntervall = 0;
var elemIntervall = document.getElementById("intervallWarmingUp");
var instIntervall = setInterval(changeIntervall, time);
}
else if (this.value == 'timeMuscleAndRestday')
{
// show/hide the corresponding boxes
$(".hometrainerIntervallWarmingUp, .hometrainerIntervallBoxing").hide(100);
$(".hometrainerIntervallMuscleAndRestday").delay(150).show(100);
// loop/set the sound
loop = setInterval(function(){$.playSound("/BETA/includes/boxing/sounds/BELL_HOMETRAINER.mp3")}, time);
// define the text for the intervalls
var textIntervall = ["<i class='fas fa-chevron-circle-up'></i> STUFE 3 <i class='fas fa-chevron-circle-up'></i> ", "<i class='fas fa-chevron-circle-down'></i> STUFE 2 <i class='fas fa-chevron-circle-down'></i>"];
var counterIntervall = 0;
var elemIntervall = document.getElementById("intervallMuscleAndRestday");
var instIntervall = setInterval(changeIntervall, time);
}
else if (this.value == 'timeBoxing')
{
// show/hide the corresponding boxes
$(".hometrainerIntervallWarmingUp, .hometrainerIntervallMuscleAndRestday").hide(100);
$(".hometrainerIntervallBoxing").delay(150).show(100);
// loop/set the sound
loop = setInterval(function(){$.playSound("/BETA/includes/boxing/sounds/BELL_HOMETRAINER.mp3")}, time);
// define the text for the intervalls
var textIntervall = ["<i class='fas fa-chevron-circle-up'></i> STUFE 2 <i class='fas fa-chevron-circle-up'></i> ", "<i class='fas fa-chevron-circle-down'></i> STUFE 1 <i class='fas fa-chevron-circle-down'></i>"];
var counterIntervall = 0;
var elemIntervall = document.getElementById("intervallBoxing");
var instIntervall = setInterval(changeIntervall, time);
}else{
// hide all corresponding boxes
$(".hometrainerIntervallWarmingUp, .hometrainerIntervallMuscleAndRestday, .hometrainerIntervallBoxing").hide(100);
// clear all intervalls
clearInterval(loop);
clearInterval(instIntervall);
}
});
('hometrainerselectinterval')。关于('change',function()){
//更改间隔的函数
函数changeIntervall(){
elemIntervall.innerHTML=textIntervall[counterIntervall];
反interval++;
if(计数器间隔>=文本间隔长度){
反间隔=0;
}
}
//设置从输入数据更改间隔的时间
var time=parseInt($(this).find(“:selected”).data(“time”))*60*1000;
如果(this.value=='timeWarmingUp')
{
//显示/隐藏相应的框
$(“.hometrainerIntervallMuscleAndRestday,.HomeTrainerIntervallBox”).hide(100);
美元(“.hometrainernertvallwarmingup”)。延迟(150)。显示(100);
//循环/设置声音
loop=setInterval(函数(){$.playSound(“/BETA/includes/boxing/sounds/BELL_HOMETRAINER.mp3”)},时间);
//定义间隔的文本
var textIntervall=[“STUFE 2”,“STUFE 1”];
var反间隔=0;
var eleminterval=document.getElementById(“intervallWarmingUp”);
var InstitInterval=设置间隔(ChangeInterval,时间);
}
else if(this.value='timeMuscleAndRestday')
{
//显示/隐藏相应的框
$(.hometrainerIntervallWarmingUp.HomeTrainerIntervallBox”).hide(100);
$(“.hometrainerIntervallMuscleAndRestday”)。延迟(150)。显示(100);
//循环/设置声音
loop=setInterval(函数(){$.playSound(“/BETA/includes/boxing/sounds/BELL_HOMETRAINER.mp3”)},时间);
//定义间隔的文本
var textIntervall=[“STUFE 3”、“STUFE 2”];
var反间隔=0;
var eleminterval=document.getElementById(“intervallMuscleAndRestday”);
var InstitInterval=设置间隔(ChangeInterval,时间);
}
else if(this.value=='timeBoxing')
{
//显示/隐藏相应的框
$(.hometrainerIntervallWarmingUp.hometrainerIntervallMuscleAndRestday”).hide(100);
$(“.hometrainerIntervallBoxing”)。延迟(150)。显示(100);
//循环/设置声音
loop=setInterval(函数(){$.playSound(“/BETA/includes/boxing/sounds/BELL_HOMETRAINER.mp3”)},时间);
//定义间隔的文本
var textIntervall=[“STUFE 2”,“STUFE 1”];
var反间隔=0;
var elemIntervall=document.getElementById(“IntervallBox”);
var InstitInterval=设置间隔(ChangeInterval,时间);
}否则{
//隐藏所有对应的框
$(“.hometrainerIntervallWarmingUp,.hometrainerIntervallMuscleAndRestday,.hometrainerIntervallBoxing”)。隐藏(100);
//清除所有间隔
清除间隔(循环);
clearInterval(Instinevall);
}
});
一旦再次发生onchange,我如何清除选择所选的间隔
也许还可以以某种方式优化代码我不是jquery/javascript专家(但它可以工作):D
对于当前代码,上一个间隔仍然运行
提前谢谢。请您将
clearInterval
代码放入try catch
块中,并记录错误,如果没有错误,则任何操作都有效,但在不同的部分中,更改后仍会运行上一设置的间隔:)取决于您声明的位置,loop
变量可能超出范围,无法访问clearTimeout
它是我要在更改时清除的“loop”和“institerval”