在JavaScript中有没有办法从setTimeout循环中退出if语句?

在JavaScript中有没有办法从setTimeout循环中退出if语句?,javascript,html,Javascript,Html,我正在创建一个百分比时钟,显示我一天中某个特定时间的百分比。当我运行它时,它的输出超过100%,而当时它应该是50%。我意识到错误在于它没有退出if语句,我无法找到一种方法来这样做。我不能使用while-true语句,因为它们不适用于浏览器,因此如果有人能在seconds变量超过一定数量时找到退出if语句的方法,我将非常感激。这是我的密码: var clock=document.getElementById(“时钟头”); 设置间隔(()=>{ var today=新日期(); var hou

我正在创建一个百分比时钟,显示我一天中某个特定时间的百分比。当我运行它时,它的输出超过100%,而当时它应该是50%。我意识到错误在于它没有退出if语句,我无法找到一种方法来这样做。我不能使用while-true语句,因为它们不适用于浏览器,因此如果有人能在seconds变量超过一定数量时找到退出if语句的方法,我将非常感激。这是我的密码:

var clock=document.getElementById(“时钟头”);
设置间隔(()=>{
var today=新日期();
var hours=today.getHours()*3600;
var minutes=today.getMinutes()*60;
var seconds=today.getSeconds()+分钟+小时;
秒=秒-31800;
如果(秒>=0&&s{
var百分比=秒/4140;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=4200&&S{
var百分比=秒/3240;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=8640&&秒{
var百分比=秒/3060;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=11760&&秒{
var百分比=秒/2940;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=17520&&S{
var百分比=秒/3180;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=20760&&S{
var百分比=秒/3240;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
},1000)
正文{
字体系列:“Josefin Sans”,无衬线;
}
#发条{
位置:绝对位置;
最高:38%;
底部:0%;
宽度:100%;
文本对齐:居中;
字体大小:200px;
}
* {
保证金:0;
填充:0;
}
.动画区{
背景:线性梯度(向左,#8942a8,#ba382f);
宽度:100%;
高度:100vh;
}
.盒子区域{
位置:绝对位置;
排名:0;
左:0;
宽度:100%;
身高:100%;
溢出:隐藏;
}
.李箱区{
位置:绝对位置;
显示:块;
列表样式:无;
宽度:25px;
高度:25px;
背景:rgba(255,255,255,0.2);
动画:动画20秒线性无限;
底部:-150px;
}
.box区域li:第n个子项(1){
左:86%;
宽度:80px;
高度:80px;
动画延迟:0s;
}
.box区域li:第n个孩子(2){
左:12%;
宽度:30px;
高度:30px;
动画延迟:1.5s;
动画持续时间:10秒;
}
.box区域li:第n个孩子(3){
左:70%;
宽度:100px;
高度:100px;
动画延迟:5.5s;
}
.box区域li:第n个孩子(4){
左:42%;
宽度:150px;
高度:150像素;
动画延迟:0s;
动画持续时间:15秒;
}
.box区域li:第n个孩子(5){
左:65%;
宽度:40px;
高度:40px;
动画延迟:0s;
}
.盒子区域li:第n个孩子(6){
左:15%;
宽度:110px;
高度:110px;
动画延迟:3.5s;
}
@关键帧设置动画{
0% {
变换:平移(0)旋转(0度);
不透明度:1;
}
100% {
变换:translateY(-800px)旋转(360度);
不透明度:0;
}
}

百分比时钟

每次要“退出”循环时,都需要
clearInterval()
。您还需要将间隔变量存储在某个位置才能清除它:

请参阅我的
//注释
,了解我所做的更改:

var interval = setInterval(() => { // Store it in a variable
    
    var today = new Date();
    var hours = today.getHours() * 3600;
    var minutes = today.getMinutes() * 60;
    var seconds = today.getSeconds() + minutes + hours;
    seconds = seconds - 31800;
    if (seconds >= 0 && seconds <= 4140) {
        clearInterval( interval ); // Clear the old one

        interval = setInterval(() => { // Store the new one
            var percentage = seconds / 4140;
            percentage = percentage * 100;
            percentage = percentage.toFixed(1);
            percentage = String(percentage) + '%';

            clock.innerHTML = percentage;
        }, 1000)
    }
    if (seconds >= 4200 && seconds <= 7380) {
        clearInterval( interval ); // Clear the old one

        interval = setInterval(() => {
            var percentage = seconds / 3240;
            percentage = percentage * 100;
            percentage = percentage.toFixed(1);
            percentage = String(percentage) + '%';

            clock.innerHTML = percentage;
        }, 1000)
    }
    if (seconds >= 8640 && seconds <= 11700) {
        clearInterval( interval ); // Clear the old one

        interval = setInterval (() => { // Store the new one
            var percentage = seconds / 3060;
            percentage = percentage * 100;
            percentage = percentage.toFixed(1);
            percentage = String(percentage) + '%';

            clock.innerHTML = percentage;
        }, 1000)
    }
    if (seconds >= 11760 && seconds <= 14700) {
        clearInterval( interval ); // Clear the old one

        interval = setInterval (() => { // Store the new one
            var percentage = seconds / 2940;
            percentage = percentage * 100;
            percentage = percentage.toFixed(1);
            percentage = String(percentage) + '%';

            clock.innerHTML = percentage;
        }, 1000)
    }
    if (seconds >= 17520 && seconds <= 20700) {
        clearInterval( interval ); // Clear the old one

        interval = setInterval (() => { // Store the new one
            var percentage = seconds / 3180;
            percentage = percentage * 100;
            percentage = percentage.toFixed(1);
            percentage = String(percentage) + '%';

            clock.innerHTML = percentage;
        }, 1000)
    }
    if (seconds >= 20760 && seconds <= 24000) {
        clearInterval( interval ); // Clear the old one

        interval = setInterval (() => { // Store the new one
            var percentage = seconds / 3240;
            percentage = percentage * 100;
            percentage = percentage.toFixed(1);
            percentage = String(percentage) + '%';

            clock.innerHTML = percentage;
        }, 1000)
    }
}, 1000)
var interval=setInterval(()=>{//将其存储在变量中
var today=新日期();
var hours=today.getHours()*3600;
var minutes=today.getMinutes()*60;
var seconds=today.getSeconds()+分钟+小时;
秒=秒-31800;
如果(秒>=0&&seconds{//存储新的
var百分比=秒/4140;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=4200&&S{
var百分比=秒/3240;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;
}, 1000)
}
如果(秒>=8640&&seconds{//存储新的
var百分比=秒/3060;
百分比=百分比*100;
百分比=固定的百分比(1);
百分比=字符串(百分比)+'%';
clock.innerHTML=百分比;