JavaScript로 카운트다운 만들기

17764 단어 JavaScript
업무 중에 카운트다운 기능을 만들 기회가 있으니 기억해야 한다.

완성품



측면 설정


index.html
<!DOCTYPE html>
<html>
    <head>

    </head>
    <body>
        <p>東京オリンピックまであと</p>
        <div id="result"></div>
        <script src="countdown.js"></script>
    </body>
</html>
그게 다야.
바디의 마지막 js를 읽은 다음, getElementById로result를 읽기 위해서.

JavaScript 측면 설정


countdown.js

var endDate = new Date('2020/07/24 00:00:00');
var interval = 1000;


function countdownTimer(){
  var nowDate = new Date();
  var period = endDate - nowDate ;
  var addZero = function(n){return('0'+n).slice(-2);}
  var addZeroDay = function(n){return('0'+n).slice(-3);}
  if(period >= 0) {
  var day = Math.floor(period / (1000 * 60 * 60 * 24));
  period -=  (day *(1000 * 60 * 60 * 24));
  var hour = Math.floor(period / (1000 * 60 * 60));
  period -= (hour *(1000 * 60 * 60));
  var minutes =  Math.floor(period / (1000 * 60));
  period -= (minutes * (1000 * 60));
  var second = Math.floor(period / 1000);
  var insert = "";
  insert += '<span class="h">' + addZeroDay(day) +'' + '</span>';
  insert += '<span class="h">' + addZero(hour) + ''+'</span>';
  insert +=  '<span class="m">' + addZero(minutes) +'' + '</span>';
  insert += '<span class="s">' + addZero(second)+ ''+ '</span>';
  document.getElementById('result').innerHTML = insert;
  setTimeout(countdownTimer,10);
  }
  else{
    var insert = "";
    var number = 0;
    insert += '<span class="h">' + number + number + '</span>';
    insert +=  '<span class="m">' + number + number + '</span>';
    insert += '<span class="s">' + number + number + '</span>';
    document.getElementById('result').innerHTML = insert;
  }
}

countdownTimer();
설명 좀 해주세요.
endDate를 목표로 하는 날짜를 주고 nowDate와 줄여서 목표 날짜까지의 차이를 발생시킵니다.하지만 단지 이렇다면 날짜, 시간, 분 등을 잘 구분하지 못했기 때문에 나눠준다.
countdown.js
  var day = Math.floor(period / (1000 * 60 * 60 * 24));
  period -=  (day *(1000 * 60 * 60 * 24));
  var hour = Math.floor(period / (1000 * 60 * 60));
  period -= (hour *(1000 * 60 * 60));
  var minutes =  Math.floor(period / (1000 * 60));
  period -= (minutes * (1000 * 60));
  var second = Math.floor(period / 1000);
여기는period와 각 단위를 일치시킨다.
countdown.js
var insert = "";
  insert += '<span class="h">' + addZeroDay(day) +'' + '</span>';
  insert += '<span class="h">' + addZero(hour) + ''+'</span>';
  insert +=  '<span class="m">' + addZero(minutes) +'' + '</span>';
  insert += '<span class="s">' + addZero(second)+ ''+ '</span>';
  document.getElementById('result').innerHTML = insert;
변수에 각자의 단위를 저장한 후 실제 표시를 위해 insert에 들어갑니다.
스폰에 각자의 값을 끼우면 숫자의 장식이 가능합니다.
그러나 변수로 직접 표시하면 한 자릿수 숫자 때 사이즈가 바뀌어 레이아웃 디자인이 붕괴된다.거기에ddZero를 사용합니다.
countdown.js
  var addZero = function(n){return('0'+n).slice(-2);}
  var addZeroDay = function(n){return('0'+n).slice(-3);}
addZeroDay는 addZero만 있으면 세 자릿수를 표시할 때 레이아웃이 붕괴될 수 있기 때문에 때때로 세 자릿수를 표시하는 데이에만 적용됩니다.
타격만 썼기 때문에 적당히 통속적이고 알기 쉽게 다시 써야 돼...

좋은 웹페이지 즐겨찾기