ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [VanillaJS] 시계 구현하기
    JavaScript/VanillaJS 2022. 10. 18. 14:14
    728x90
    반응형

    1. 매번 반복하기 setInterval()

    부제: , 2초마다, 4초마다 원하는 간격으로 실행시키기

     

    1) 매번 반복하기 - setInterval()

    setInterval(함수, 시간간격) //시간은 ms 기준 (million seconds)

     

     

    index.html

    <h2 id="clock">00:00</h2>

    h1태그 위에 h2 태그 추가하기.

    id는 clock.

    디폴트 세팅은 00시 00분.

     

    clock.js

    const clock = document.querySelector("h2#clock");
    
    function sayHello() {
        console.log("hello");
    }
    
    setInterval(sayHello, 5000);
    // -> 5초마다 sayHello 함수가 실행됨

     

    2) 타이머 설정하기 - setTimeout()

    setTimeout(sayHello, 5000);
    // -> 5초 후에 딱 한 번 sayHello 함수가 실행됨

     

    2. 시간 정보 가져오기 Date()

    1) 시간 정보 가져오기 - Date()

    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date

    자바스크립트 내장함수 Date() 이용해서 시간 정보 가져오기

     

    // 시
    new Date().getHours()
    // -> 15
    
    // 분
    new Date().getMinutes()
    // -> 48
    
    // 초
    new Date()/getSeconds()
    // -> 12

    2) 가져온 시간 정보 적용하기

    시간 정보를 가져와서 h2 #clock 태그에 innerText 해주기

    const clock = document.querySelector("h2#clock");
    
    function getClock() {
        const date = new Date();
        clock.innerText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
    }
    
    getClock(); // 시계 먼저 실행하기 -> 처음에 00:00으로 시작하지 않도록
    setInterval(getClock, 1000);

     

    3) 자리 숫자는 자리 숫자로 보이게 만들기 _ padStart()

    2시 7분 5초의 경우 2:7:5 로 보이는 문제가 있다.

    이를 02:07:05 로 보이도록 수정한다.

     

    이용할 function -> padStart()

    "문자열".padStart(원하는 문자열 길이, 원하는 문자열 길이가 아닐 경우 추가할 문자);

    예시.

    "1".padStart(2, "0");
    // "01"
    
    "12".padStart(2, "0");
    // "12"
    
    "hello".padStart(20, "x");
    // "xxxxxxxxxxxxxxxhello"

    간단하지만 매우 유용한 기능

    비슷한 예로 padEnd()가 있다.

    padStart는 원하는 문자열 길이가 아니라면 지정한 문자를 문자열 '앞'(Start)에 추가해줬다면,

    padEnd는 문자열 '끝'(End)에 추가해준다.

     

    예시.

    "1".padEnd(2, "0");
    // "10"

     

    3. 완성본

    index.html

    <body>
        <form class="hidden" id="login-form">
            <input 
                required
                maxlength="15"
                type="text"
                placeholder="What is your name?"
            />
            <button>Log In</button>
        </form>
        <h2 id="clock">00:00</h2> // 시계를 나타낼 h2 태그
        <h1 class="hidden" id="greeting" ></h1>
        <script src="js/greetings.js"></script>
        <script src="js/clock.js"></script>
    </body>

    clock.js

    const clock = document.querySelector("h2#clock");
    
    function getClock() {
        const date = new Date();
        const hours = String(date.getHours()).padStart(2, "0"); 
        const minuits = String(date.getMinutes()).padStart(2, "0");
        const seconds = String(date.getSeconds()).padStart(2, "0");
        clock.innerText = `${hours}:${minuits}:${seconds}`;
    }
    
    getClock();
    setInterval(getClock, 1000); // 실시간으로 보이게 하는 부분 (1초마다 실행)

     

     

    LIST
Designed by Tistory.