억대 연봉을 위한 인간수업
article thumbnail
반응형

자바스크립트에서 뭔가 반복하고 싶을땐 setInterval 또는 setTimeout을 사용한다. 

 

다른 언어와 마찬가지로 for, while문 등을 사용할 수 있지만, setInterver과 setTimeout은 일정한 시간 간격을 두고 반복해서 수행한다. 

차이점은 for,while문은 해당 구문이 호출되는 순간 결과값이 출력되지만 setInterval 과 setTimeout은 시간마다 해당 구문을 반복해 웹브라우저가 실시간으로 변하는 액션을 취한다는 점에서 큰 차이가 존재한다.

 

setInterval과 setTimeout

두 함수의 차이점은 다음과 같다.

  • setInterval : 해당 함수를 불러오면서 일정 시간마다 반복해서 실행
  • setTimeout : 일정 시간이 지난 후 함수를 반복해서 실행

 

사용 예시 코드는 다음과 같다.

함수의 시간 단위는 ms이며, 1000 단위가 1초를 의미한다.

const clock = document.querySeletor("#date");

function getClock(){
	const date = new Date();
	clock.innerText = `${date}`;
}

getClock();//화면 시작하자 마자 바로 띄워주기 위해서 호출함
//1000단위가 1초
setInterval(getClock, 1000);
setTimeout(getClock, 5000);

 

 

 

반복실행하는 함수를 멈추기 위해선 clearInterval() 함수를 사용하면 된다.

clearInterval("멈출 함수이름");

 

 

 

시계 만들기

setInterval는 시계같은 걸 만들때 유용하게 사용할 수 있다.

 

시계 구현을 위해 HTML을 만들자.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" >
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Momentum</title>
    </head>
<body>
	<h1 id="clock">00:00:00</h2>
    <script src="index.js" defer></script>
</body>
</html>

 

실행해보면 00:00:00만 출력되고 있다.

 

 

여기에 setInterval을 넣은 JS를 작성해보자.

 

querySelector로 HTML의 [clock]id를 가지고 있는 요소를 가져온다.

그리고 new Date();함수로 현재 날짜와 시간을 가져와서 각각 시간, 분, 초를 따로 변수에 저장한다.

그리고 innerText로 현재 시간으로 변경해준다.

여기서 setInterval 함수의 기능으로 1초마다 시간이 변하게 된다.

const clock = document.querySelector("#clock");

function getClock(){
	const date = new Date();
	const hours = String(date.getHours());
	const minutes = String(date.getMinutes());
	const seconds = String(date.getSeconds());
	clock.innerText = `${hours}:${minutes}:${seconds}`;
}

getClock();
setInterval(getClock, 1000);

 

실행해보면 전자시계처럼 잘 작동한다.

 

 

여기서 00:00:00 형식에 맞춰 출력하려면 padStart()함수를 사용하면 된다.

 

padStart 사용방법

padStart는 현재 문자열의 시작을 지정한 문자열로 채워 원하는 길이로 출력하는 함수다.

시계는 두자리로, 앞에 값이 없을땐 0으로 시작하므로 .padStart(2,"0");을 붙여주면 원하는 시계 형식을 만들 수 있다.

const clock = document.querySelector("#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);

 

JS 수정 후 확인해보니 잘 동작한다.

반응형
profile

억대 연봉을 위한 인간수업

@회뜨는참치

이 글이 당신에게 조금이라도 도움이 된다면 좋겠습니다.