clearInterval(), setInterval()
타이머 함수라도고 불리는 setInterval()
은 지정된 시간 간격으로 작업을 수행하기 위해 만들어진 함수이다. clearInterval
은 실행중인 작업을 중지하는 게 아니라 주어진 작업을 모두 끝낸 후 다음 작업을 중지시키는 함수이다.
HTML
<div class="wrapper">
<h1>Stopwatch</h1>
<h2>Vanilla JavaScript Stopwatch</h2>
<p>
<span id="seconds">00</span>:<span id="tens">00</span>
</p>
<ul id="laps">
</ul>
<button id="button-start">Start</button>
<button id="button-lap">Lap</button>
<button id="button-stop">Stop</button>
<button id="button-reset">Reset</button>
</div>
Javascript
초기세팅
var seconds = 00;
var tens = 00;
var appendTens = document.getElementById("tens")
var appendSeconds = document.getElementById("seconds")
var buttonStart = document.getElementById('button-start');
var buttonLap = document.getElementById('button-lap');
var buttonStop = document.getElementById('button-stop');
var buttonReset = document.getElementById('button-reset');
var lapList = document.getElementById('laps');
var lapCounter = 1;
var Interval;
- start 버튼 클릭 시
buttonStart.onclick = function() { clearInterval(Interval); Interval = setInterval(startTimer, 10); }
function startTimer () {
tens++;
// 두 자리 숫자로 표현해 주기 위해 나눔
if(tens < 9){
appendTens.innerHTML = "0" + tens;
}
if (tens > 9){
appendTens.innerHTML = tens;
}
// ms가 꽉 찰 경우 seconds로 값을 넘겨줌
if (tens > 99) {
console.log("seconds");
seconds++;
appendSeconds.innerHTML = "0" + seconds;
tens = 0;
appendTens.innerHTML = "0" + 0;
}
// seconds가 9 이상이면 앞에 "0" 붙이지 않음
if (seconds > 9){
appendSeconds.innerHTML = seconds;
}
}
-
stop 버튼 클릭 시
현재 진행되는startTimer
이벤트를 마지막으로 이벤트 중지buttonStop.onclick = function() { clearInterval(Interval); }
-
reset 버튼 클릭 시
저장된 모든 정보를 초기 상태로 되돌림. localStorage에 저장된 정보도 리셋buttonReset.onclick = function() { clearInterval(Interval); tens = "00"; seconds = "00"; appendTens.innerHTML = tens; appendSeconds.innerHTML = seconds; lapList.innerHTML = ""; lapCounter = 1; storeLaps(); }
-
labs 버튼 클릭 시
innerHTML을 통해 시간을 저장. localStorage에 저장해서 reload 시에도 정보가 남아있게 함buttonLap.onclick = function() { lapList.innerHTML += '<li> <span class="lap-seconds">' + appendSeconds.innerHTML + '</span>:<span class="lap-tens">' + appendTens.innerHTML + '</span> -- Lap ' + lapCounter +'</li>'; lapCounter++; storeLaps(); } function storeLaps() { window.localStorage.myLaps = lapList.innerHTML; }
-
getlaps
Reload 시 마지막 정보를 불러오도록 함function getLaps(){ lapList.innerHTML = window.localStorage.myLaps; } getLaps();
'front-end > javascript' 카테고리의 다른 글
[Javascript] ES6, let vs const, 호이스팅과 객체 리터럴, 디스트럭쳐링 (0) | 2019.09.20 |
---|---|
[javascript] ES6 rest 파라미터와 Spread Syntax(전개 구문) (0) | 2019.09.06 |
자바스크립트 AJAX (1/2) , XMLHttpRequest 그리고 HTTP METHOD (0) | 2019.08.28 |
[javascript] Web Storage 웹 스토리지와 쿠키의 개념과 사용법 (0) | 2019.08.24 |
Javascript 동기와 비동기 callback부터 async&await (1) | 2019.08.23 |
댓글