Javascript 如何设置不断扩展自身的计时器

Javascript 如何设置不断扩展自身的计时器,javascript,jquery,Javascript,Jquery,我已经建立了一个带有计时器的弹出窗口。当计时器结束时,我希望它再延长一天。我已经走了这么远,它延长了自己一天一次,但后来它退出了 也许你对如何进行有什么想法 谢谢 //Make countdown var setInfiniteTime = '{{ $actiepopup->infiniteTime }}'; // Update the count down every 1 second var x = setInterval(function() { // Set the

我已经建立了一个带有计时器的弹出窗口。当计时器结束时,我希望它再延长一天。我已经走了这么远,它延长了自己一天一次,但后来它退出了

也许你对如何进行有什么想法

谢谢

//Make countdown

var setInfiniteTime = '{{ $actiepopup->infiniteTime }}';

// Update the count down every 1 second
var x = setInterval(function() {

    // Set the date we're counting down to

    // Get todays date and time
    var currentDate = new Date().getTime();

    // get countdown time
    var countDownDate = new Date(countDownTimeUntil).getTime();

    // console.log('countdowndateBefore' + countDownDate);

    // check in infinite time is set
    if (setInfiniteTime == 'Yes') {
        if (currentDate >= countDownDate) {

            // var i;
            // for (var i = 0; i < 999999; i++) {                    
            var countDownDate = new Date(countDownTimeUntil).getTime() + 86400000;
            //   console.log(i);
            // }
        }
    }

    // console.log('currentdate' + currentDate);
    // console.log('countdowndate' + countDownDate);

    // Find the distance between now and the count down date
    var distance = countDownDate - currentDate;

    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    // Display the result in the element with id="countdown"
    $("#countdown").text(days + "d " + hours + "h " + minutes + "m " + seconds + "s ");

    // If the count down is finished, write some text 
    if (distance < 0) {
        clearInterval(x);
        $("#countdown").text("Actie beeïndigd");
    }
}, delayInMilliseconds);
//倒计时
var setInfiniteTime='{{$actiepopup->infiniteTime}}';
//每1秒更新一次倒计时
var x=setInterval(函数(){
//确定我们倒计时的日期
//获取今天的日期和时间
var currentDate=new Date().getTime();
//倒计时
var countDownDate=新日期(countDownTimeUntil).getTime();
//log('countdowndateBefore'+countDownDate);
//设置了无限时间签入
如果(setInfiniteTime==“是”){
如果(当前日期>=倒计时日期){
//var i;
//对于(var i=0;i<999999;i++){
var countDownDate=新日期(countDownTimeUntil).getTime()+86400000;
//控制台日志(i);
// }
}
}
//console.log('currentdate'+currentdate);
//console.log('countdowndate'+countdowndate);
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-当前日期;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//在id为“倒计时”的元素中显示结果
$(“#倒计时”).text(天+天+小时+小时+分钟+米+秒+秒);
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
$(“#倒计时”).text(“Actie beeïndigd”);
}
},延迟毫秒);
希望你有足够的信息

另外,如果使用布尔语句,请使用
true
false
,因为这样更容易使用

if (setInfiniteTime) { 
  setInterval(() => {
    var countDownDate = new Date(countDownTimeUntil).getTime() + 86400000
  }, 86400000)
}

谢谢你的建议。如果我错了,请纠正我,但当我使用setInterval时,它将不起作用,因为每次加载页面时都会执行脚本。因此,它将重置间隔。。弹出窗口将显示在网络商店中,因此会有大量的交互。然后,这是一个完全不同的场景,需要将今天的日期存储在会话中,根据该会话执行条件检查,或者存储变量服务器端并对其进行检查。也许可以尝试进行调整,以便人们可以帮助您。