JavaScript

[노마드 코더] 시계 구현하기

개발자 마멋 2023. 11. 17. 14:59

HTML

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/style.css">
    <title>valila js</title>
</head>
<body>
    <form id="login-form" class="hidden">
        <input
        required
        maxlength="15"
        type="text"
        placeholder="what is your name?"
        />
        <input type="submit" value="Log in" />
    </form>
    <h2 id="clock">00:00:00</h2>
    <h1 id="greeting" class="hidden"></h1>
    <script src="js/greetings.js"></script>
    <script src="js/clock.js"></script>
</body>
</html>

강의 듣기 전 내가 해본 것

const clock = document.querySelector("h2#clock");
const date = new Date();
function getClock() {
    console.log(date.getHours());
    console.log(date.getMinutes());
    console.log(date.getSeconds());


}

setInterval(getClock, 1000);

 

문제점 :

- 현재 시간이 계속 업데이트 되는게 아닌 호출 당시 고정된 시간만 1초 간격으로 출력

- 시계 형태가 아니라 세로로 출력됨

 


강의에서 한 것

const clock = document.querySelector("h2#clock");
function getClock() {
    const date = new Date();
    console.log(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`);
}

setInterval(getClock, 1000);

 

정상 작동

문제점 : 

1. 새로고침 하면 1초 기다려랴 시간을 알려주기 시작

2. 시간이 01, 02,가 아닌 1, 2 이렇게 표시됨


[문제1 해결]  함수 getClock을 호출하면 바로 실행

const clock = document.querySelector("h2#clock");
function getClock() {
    const date = new Date();
    console.log(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`);
}
getClock();
setInterval(getClock, 1000);

 

[문제2 해결] padStart 사용

const clock = document.querySelector("h2#clock");
function getClock() {
    const date = new Date();
    const hours = String(date.getHours()).padStart(2, "0");
    const minutes = String(date.getMinutes()).padStart(2, "0");
    const seconds = String(date.getSeconds()).padStart(2, "0");
    clock.innerText = `${hours}:${minutes}:${seconds}`;
}

getClock();
setInterval(getClock, 1000);

 

- "padStart"는 문자열에만 사용이 가능하기 때문에 "string()" 으로 감싸줌

 

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });