【问题标题】:How to update the variable value in setinterval function on button click如何在按钮单击时更新 setinterval 函数中的变量值
【发布时间】:2018-09-06 18:16:14
【问题描述】:

我在我的应用程序中运行一个计时器,它将分钟和秒的值存储在 cookie 中。在特定时间段,如果用户在弹出窗口中单击确定按钮,弹出窗口将提示一次,计时器需要重置并重新开始初始值。

function startTimer(duration) {
            var timer = duration,
                minutes, seconds;            
            var seesionIdState = 0;
            setInterval(function() {  
            minutes = parseInt(timer / 60, 10);
            seconds = parseInt(timer % 60, 10);              
                if (seesionIdState == 0) {
                    minutes = minutes < 10 ? "0" + minutes : minutes;
                    seconds = seconds < 10 ? "0" + seconds : seconds;
                    var date = new Date();
                    date.setTime(date.getTime() + (minutes * 60 * 1000));
                    cookie.set("minutes", minutes.toString(), {});
                    cookie.set("seconds", seconds.toString(), {});
                    if (--timer < 0) {
                        timer = 0;
                    }
                    if (minutes == 1 && seconds == 00) {
                        if ($window.innerWidth > 767) {
                            angular.element("#sessionId").modal({
                                backdrop: 'static'
                            });
                            setTimerforPopup();
                        } else {
                            angular.element("#sessionIdMobile").modal({
                                backdrop: 'static'
                            });
                            setTimerforPopup();
                        }

                    } else if (minutes == 00 && seconds == 00) {
                        seesionIdState++;
                    }

                } else {
                    var minutes_data = getCookie("minutes");
                    var seconds_data = getCookie("seconds");
                    if (!minutes_data || !seconds_data) {
                        return;
                    }
                    cookie.remove('minutes');
                    cookie.remove('seconds');
                }

            }, 1000);
        }
startTimer(60);

如果单击确定按钮,我将再次调用函数startTimer(60);。但我面临的问题是setinterval 变量timer 没有得到更新,它正在使用旧值。

请帮我重置并从给定值开始。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    要重置计时器,您需要停止旧计时器。为此,您需要检索 setInterval 函数返回的 id 并将其分配给代码中的全局变量。

    intervalId = setInterval(function() { ... ]);
    

    然后在 startTimer 函数的开头添加

    if(typeof intervalId != 'undefined'){
        clearInterval(intervalId);
    }
    

    或者干脆创建附加功能

    function resetOrStartTimer(duration){
        if(typeof intervalId != 'undefined'){
             clearInterval(intervalId);
        }
        startTimer(duration);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 2018-04-17
      • 2016-09-18
      相关资源
      最近更新 更多