为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 localStorage 到期之前停止倒计时?

如何在 localStorage 到期之前停止倒计时?

慕哥6287543 2021-06-07 12:33:41
以下脚本进行倒计时,直到达到设定的数字(在本例中为 76),然后再次开始倒计时,依此类推。更新页面倒计时不会重置,直到 localStorage 到期。我希望当倒计时达到 76 时它停止并且不再开始计数。这直到 localStorage 过期。请问我该怎么做?<div id="divCounter"></div>var min = 80;var max = 85;var random = Math.floor(Math.random() * (+max - +min)) + +min;if (localStorage.getItem("counter")) {  if (localStorage.getItem("counter") >= 1000000000) { // Duration of localStorage    var value = random;  } else {    var value = localStorage.getItem("counter");  }} else {  var value = random;}document.getElementById('divCounter').innerHTML = value;var counter = function () {  if (value <= 76) { // End count down. <= or >=    localStorage.setItem("counter", random);    value = random;  } else {    value = parseInt(value) - 1; // + 1 or - 1    localStorage.setItem("counter", value);  }  document.getElementById('divCounter').innerHTML = value;};var interval = setInterval(function () {  counter();}, 1000); // speed count
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

这段代码有很多问题,但考虑到这里的情况,您需要在 value <= 76 时调用 clearInterval(interval) 以阻止 localStorage 在该点再次更改。


查看完整回答
反对 回复 2021-06-11
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

这是我对您意图的最佳猜测:


// If there's a count in localStorage but it is expired then

//      set value to a random between 80 and 85

// else

//      set value to the count in localStorage


// Display the count in a div and decrease it by 1 every second. 

// If the count falls below 76 then 

//      stop counting down and

//      reset the localStorage counter to the random value


        const min = 80;

        const max = 85;

        const stopValue = 76;

        const duration = 1000000000;

        const rnd = Math.floor(Math.random() * (max - min)) + min;


        const counter = () => {

            const lsCounter = localStorage.getItem('counter');


            let retval;


            if(lsCounter && lsCounter <= duration){

                retval = lsCounter - 1;

                if(lsCounter <= stopValue){

                    clearInterval(interval);

                    retval = rnd;

                }

            }else{

                retval = rnd;

            }

            localStorage.setItem('counter', retval);

            document.getElementById('divCounter').innerHTML = retval;

        }

        let interval = setInterval(function () {

            counter();

        }, 1000); 

这样对吗?


查看完整回答
反对 回复 2021-06-11
  • 2 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信