js:弹窗页面开始30分钟倒计时,刷新页面倒计时不重置

首先,页面的数字自动跳转时间,且刷新不会重置。

在html内容:

 <span id="minute"></span>
 <span>分</span>
 <span id="seconds"></span>
 <span>秒</span>

js部分:

$(document).ready(function(){

window.onload = function(){
    //倒计时
    // 1. 获取分/秒待填充元素
    var minuteEle = document.getElementById("minute")
    var secondsEle = document.getElementById("seconds")
    // 2. 设置初始值
    var minute = 29;
    var seconds = 60;
    var time 
    // 3. 如果在session里面能取到值,说明页面是刷新的,直接获取值
    if(sessionStorage.getItem("countDown")){
        time = sessionStorage.getItem("countDown")
        // 3.1 获取现在的时间,用设置的倒计时时长 - 现在时间 = 还剩时长 
        var time1 = new Date().getTime()
        minute = 29 - Math.floor((time1 - time) / 1000 / 60)  //分
        seconds = 60 - Math.floor((time1 - time) / 1000 % 60)  //秒
    }else{
        // 4. 否则获取当前时间作为开始时间,并存入session
        time = new Date().getTime()
        sessionStorage.setItem('countDown',time)
    }
    // 5. 设置计时器
    var timer = setInterval(function(){
      // 5.1 如果上一次秒是‘00’=> 04:00 本次直接为03:59
      if(seconds == '00' && minute > 0){
        seconds = 59;
        minute--
      }else{
        // 5.2 否则直接秒数减一
        seconds--;
      }
      // 5.3 如果秒为0-9 则拼接为 ‘08’
      if(seconds >= 0 && seconds < 10){
        seconds = '0' + Number(seconds)
      }
      // 5.4 如果分为0-9 则拼接为 ‘04’
      if(minute >= 0 && minute < 10){
        minute = '0' + Number(minute)
      }
      // 5.5 将分秒填充进元素显示
      secondsEle.innerHTML = seconds
      minuteEle.innerHTML = minute
      // 5.6 00:00 倒计时结束,清除计时器
      if(minute == 0 && seconds == 0){
        clearInterval(timer)
      }
    },1000)
}
})

效果:

此处的效果是没有颜色的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值