'Development/Javascript'에 해당되는 글 1건

반응형

Javascript를 활용하여 매 초마다 시간을 변경해서 웹페이지에 반영할 때 유용하게 쓸 수 있는 함수로 setInterval이 있다.

아래와 같이 실행할 함수 이름과 밀리초(ms) 단위의 시간을 파라미터로 활용할 수 있다. Chrome(구글 크롬) 브라우저에서 테스트한 결과, 실행할 함수는 "(쌍따옴표) 또는 '(따옴표)로 둘러싸야 정상적으로 실행이 되었다.

var timerID;

timerID = setInterval( "function_to_run()", 5000 );


setInterval은 한번 실행하고 멈추는 것이 아니고 파라미터로 입력한 주기마다 반복 실행하며, clearInterval 함수로 중지시킬 수 있다. 실행할 함수에 파라미터를 적용할 수는 없기 때문에, 파라미터가 있는 함수를 setInterval로 쓰고 싶다면 아래와 같이 쓸 수 있다. 원인을 파악하지 못했지만, 파라미터가 있는 함수를 파라미터로 쓸 때는 "(쌍따옴표)나 '(겹따옴표)를 쓰면 안된다.

var timerID;

timerID = setInterval( function(){ function_with_params(foo, bar); }, 5000 );


setInterval과 clearInterval을 활용하여 시계 형식으로 제한된 시간을 감소시키는 타이머 코드의 예제는 다음과 같다.

<script language="JavaScript">

var timerID; // 타이머를 핸들링하기 위한 전역 변수

var time = 119; // 타이머 시작시의 시간


/* 타이머를 시작하는 함수 */

function start_timer() { 

timerID = setInterval("decrementTime()", 1000);

}


/* 남은 시간을 감소시키는 함수 */

function decrementTime() { 

var x1 = document.getElementById("time1");

var x2 = document.getElementById("time2");

x1.innerHTML = toMinSec(time);

x2.innerHTML = toMinSec(time);


if(time > 0) time--;

else { 

// 시간이 0이 되었으므로 타이머를 중지함

clearInterval(timerID);


// 시간이 만료되고 나서 할 작업을 여기에 작성

document.form.submit(); // 예: 강제로 form 실행

}

}


/* 정수형 숫자(초 단위)를 "시:분:초" 형태로 표현하는 함수 */

function toHourMinSec(t) { 

var hour;

var min;

var sec;


// 정수로부터 남은 시, 분, 초 단위 계산

hour = Math.floor(t / 3600);

min = Math.floor( (t-(hour*3600)) / 60 );

sec = t - (hour*3600) - (min*60);


// hh:mm:ss 형태를 유지하기 위해 한자리 수일 때 0 추가

if(hour < 10) hour = "0" + hour;

if(min < 10) min = "0" + min;

if(sec < 10) sec = "0" + sec;


return(hour + ":" + min + ":" + sec);

}

</script>


반응형
블로그 이미지

Bryan_

,