Js 之时间倒计时


一、效果图

 二、代码

    <h1>Countdown Clockh1>
<div id="clockdiv">
  <div>
    <span class="days">00span>
    <div class="smalltext">Daysdiv>
  div>
  <div>
    <span class="hours">00span>
    <div class="smalltext">Hoursdiv>
  div>
  <div>
    <span class="minutes">00span>
    <div class="smalltext">Minutesdiv>
  div>
  <div>
    <span class="seconds">00span>
    <div class="smalltext">Secondsdiv>
  div>
div>
<script type="text/javascript">
let ut = {};
const countDown = function(time, fn) {
    let maxtime = time - new Date().getTime(), //剩余秒
    timer = setInterval(function() {
        if (maxtime >= 0) {
            const dd = parseInt(maxtime / 60 / 60 / 24, 10), //计算剩余的天数  
            hh = (Array(2).join(0) + parseInt(maxtime / 60 / 60 % 24, 10)).slice(-2), //计算剩余的小时数  
            mm = (Array(2).join(0) + parseInt(maxtime / 60 % 60, 10)).slice(-2), //计算剩余的分钟数  
            ss = (Array(2).join(0) + parseInt(maxtime % 60, 10)).slice(-2); //计算剩余的秒数  

            fn({dd, hh, mm, ss});
            --maxtime;
        } else {
            clearInterval(timer)
            fn({})
        }
    }, 1000)
},
showtime = function(time) 
{
    const clock = document.getElementById("clockdiv"),
    daysSpan = clock.querySelector('.days'),
    hoursSpan = clock.querySelector('.hours'),
    minutesSpan = clock.querySelector('.minutes'),
    secondsSpan = clock.querySelector('.seconds');

    if(undefined === time.ss) {
        clock.innerHTML = '结束了';
        return false;
    }
    
    if(undefined === ut.dd || time.dd !== ut.dd) daysSpan.innerHTML = time.dd;
    if(undefined === ut.hh || time.hh !== ut.hh) hoursSpan.innerHTML = time.hh;
    if(undefined === ut.mm || time.mm !== ut.mm) minutesSpan.innerHTML = time.mm;
    secondsSpan.innerHTML = time.ss;
    ut = time;
};

countDown(new Date().getTime() + 60 * 60 * 24 * 10, showtime);
script>
js