0001.倒计时:页面刷新不重置

本文介绍了一种使用HTML和JavaScript实现网页倒计时的方法,通过读取sessionStorage中的时间来更新显示的分钟和秒数,实现了精确的倒计时功能。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

  <!-- 时分秒分别显示 -->
  <span>00:</span>
  <span id="minute"></span>
  <span>:</span>
  <span id="seconds"></span>

  <script>
    window.onload = function(){
        // 1. 获取分/秒待填充元素
        var minuteEle = document.getElementById("minute")
        var secondsEle = document.getElementById("seconds")
        // 2. 设置初始值
        var minute = 4;
        var seconds = 60;
        var time 
        // 3. 如果在session里面能取到值,说明页面是刷新的,直接获取值
        if(sessionStorage.getItem("countDown")){
            time = sessionStorage.getItem("countDown")
            // 3.1 获取现在的时间,用设置的倒计时时长 - 现在时间 = 还剩时长 
            var time1 = new Date().getTime()
            minute = 4 - 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)
    }
  </script>
</body>
</html>

第0001天:学习打卡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值