JavaScript

Javascript - 시간 다운 타이머 만들기

칠구의 스터디 2024. 1. 18. 18:40

말 그대로 자바스크립트를 이용해서 간단한 시간 다운 타이머를 만들 것이다

구현한 기능: 버튼들 (스타트/스탑/리셋) + 시간 입력

 

결과물 미리보기 ⬇️⬇️

 

See the Pen Untitled by pronambin (@kimnambin) on CodePen.


주석으로 한줄한줄 자세한 설명부분 ⬇️⬇️

 

버튼부분 자바스크립트

  //타이머를 0초부터
  let timer;
  let seconds = 0;

  //스타트 버튼 1초씩 업데이트 setInterval
  function start() {
    timer = setInterval(update, 1000);
  }

  //스탑 버튼 -> 정지 = clearInterval
  function stop() {
    clearInterval(timer);
  }


  //리셋 버튼 -> 정지와 0초로 업데이트
  function reset() {
    clearInterval(timer);
    seconds = 0;
    update();
  }

 

시:분:초가 업데이트 되는 부분 -> update

function update() {
    const hours = String(Math.floor(seconds / 3600)).padStart(2, "0"); //1시간을 3600초로 나눔 + 1시간을 01시간으로 나타냄
    const minutes = String(Math.floor((seconds % 3600) / 60)).padStart(2, "0"); 
    const remainingSeconds = String(seconds % 60).padStart(2, "0");

    // 00:00:00으로 보여줌 hours: minutes : remainingSeconds `(빽틱)은 변수나 표현식을 사용할 때 씀
    document.getElementById('clock').innerText = `${hours}:${minutes}:${remainingSeconds}`;
    //카운트 다운을 위함
    seconds--;
  }

 

시:분:초를 입력할 수 있도록 하는 함수 ->inputtime 

입력받은 시:분:초를 초로 변환해주는 함수 -> getTotalSecondsFromClock

function inputtime() {
    document.getElementById('clock').contentEditable = true; //변경을 가능하게 함
    document.getElementById('clock').focus();
  }
  //변경 시 'blur' 이벤트핸들러 사용 
  document.getElementById('clock').addEventListener('blur', function () { 
    seconds = getTotalSecondsFromClock(); //getTotalSecondsFromClock() 함수 사용
    update(); // 타이머 갱신
    document.getElementById('clock').contentEditable = false; //더이상 시간을 바꾸지 못하게 함
  });

  // 시:분:초를 초로 변환하는 함수
  // 그니까 입력한 시간을 나태내주는 함수 getTotalSecondsFromClock
  //1시간 -> 01:00:00 
  function getTotalSecondsFromClock() { 
    const clockText = document.getElementById('clock').innerText;
    const [hours, minutes, seconds] = clockText.split(':').map(Number);
    return hours * 3600 + minutes * 60 + seconds;
  }