Daily coding

JavaScript : setInterval() 이용하여 타이머 만들기 본문

Front-end/Java Script

JavaScript : setInterval() 이용하여 타이머 만들기

sunnnkim 2020. 1. 7. 18:30

setInterval : 일정한 간격으로 특정 함수를 호출하는 함수

 

setInterval("함수명", 초); ---> 초단위는 1/1000초 단위로, 1000을 입력하면 1초 간격으로 함수가 갱신된다.

- 변수를 하나 선언하여 interval의 값을 저장하고

  초기화 및 타이머 종료가 가능하도록 한다.

ex > var time = setInterval ( "func()", 1000 ); ---> func() 함수를 1초간격으로 갱신해준다

 

* interval을 설정하기 전에, 변수를 초기화 시켜주도록한다 (이전 타이머 값을 초기화)

ex > clearInterval ( time ); ---> time에 들어있는 interval값을 초기화시킨다 ( =종료시킴)

 

* 특정 횟수만큼 반복 시키기 위해서 count 변수를 설정한다.

 

ex >

var count =100; // 100회 반복

var time = 0;

function start(){

    clearInterval (time);

    time = setInterval("func()", 1000); --> 1초 간격으로 갱신

}

function func(){

    count = count +1;

    if( count != 0) {  // 카운트 진행중

         (진행할 로직)

    }

    else if ( count == 0 ) {

         clearInterval(time); ---> 카운트를 끝냄

    }

}

 

 

*** name으로 인덱스 찾기 


//  name으로 index 찾기 ( frm은 form의 name)
  choice = document.frm.myChoice.selectedIndex;

 

// 찾은 index로 value찾기
  count = parseInt(document.frm.myChoice.options[choice].value);

 

 

** 우클릭 금지시키는 함수

document.oncontextmenu = function() {
     alert("마우스의 우클릭은 사용할 수 없습니다.")
     return false;
}

 

	<!DOCTYPE html>
	<html>
	<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	</head>
	<body>
	
	<!-- 
	form의 name의 목적 : 자바스크립트에서 접근이 용이하게 하기 위해서 사용
	-->
	
	<form action="" name="frm">
	<div align="center">
	<strong>Ramen Timer</strong><br><br>
	
	<select id="selid" name="myChoice">
		<option value="180">원하는 시간을 선택해주십시오(기본:3분)</option>
		<option value="300">5분</option>
		<option value="180">3분</option>
		<option value="150">2분 30초</option>
		<option value="120">2분</option>
		<option value="60">1분</option>
		<option value="30">30초</option>
	</select>
	
	<input type="button" value="GO!" onclick="noodle()">
	<br><br>
	
	<span id="countdown">time selected</span>
	<br><br>
	
	<input type="button" value="Close" onclick='window.close()'>
	
	</div>
	
	</form>
	<script type="text/javascript">
	var count = 0;
	var time = 0;
	var choice = 0;
	
	function noodle() {
		
		clearInterval(time);	// 타이머 우선 초기화 시켜주기(time initialize)
	/* 
	 
	 	ID로 가져오기
		// select의 value를 가져오기 : value
		var val = document.getElementById("selid").value;
		alert(val);	// 확인용
		// select의 index값을 가져오기 : selectedIndex
		var indexNum = document.getElementById("selid").selectedIndex;
		alert(indexNum);	// 확인용
	 */
	 
	 
	// 	name으로 index 찾기
	 	choice = document.frm.myChoice.selectedIndex;
	//	alert(choice);
	 
	 	// 찾은 index로 value찾기
	 	count = parseInt(document.frm.myChoice.options[choice].value);
//		alert(count); 
		
		// 타이머 함수 1초씩 호출하는 함수 만들기
		time = setInterval("myTimer()",1000);
		
	}
	function myTimer() {
		count = count - 1; // 타이머 선택 숫자에서 -1씩 감산함(갱신되기 때문)
		
		document.getElementById("countdown").innerHTML
			= "완료까지 <b>" + count +"</b>초 남았습니다.";
		if(count == 0) { 
			clearInterval(time);	// 시간 초기화
			alert("시간이 완료되었습니다.")
		}
	}
	
	//우클릭 사용금지
	document.oncontextmenu = function() {
		alert("마우스의 우클릭은 사용할 수 없습니다.")
		return false;
	}
	</script>
	
	</body>
	</html>