메뉴 건너뛰기

조회 수 7033 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

▶▷ 알아두면 좋은 것들

 

 이번 글에서는 타이머를 가지고 이미지나 글을 담고 있는 배너를 일정 시간이 지난뒤에 계속해서 바꾸는 예제를 만들어 볼까합니다. image 태그에 대한 지식을 가지고 계셔야 예제를 이해할 수 있습니다.

 

 우선 핵심기능인 setTimeout() 함수에 대해서 알아볼까요?

setTimeout("실행할 메소드", 지연할 시간);

 

 setTimeout() 함수는 두개의 인자를 사용하게 됩니다.

첫번째는 "실행할 메소드"로 일정한 시간이 흐른뒤에 우리가 실행하고자 하는 메소드(함수)를 인자로 넣습니다.

두번째는 "지연할 시간"으로 밀리초를 입력하게 됩니다. 밀리초는 천분의 일초를 의미 하기때문에,

5초를 지연하고 할 경우, 5000이라는 숫자를 넣어야합니다.

 

 그리고 setTimeout() 함수는 특별한 식별자를 반환합니다. 이것은 다음 예제에서 설명토록 하겠습니다.

 

 소스를 보기에 앞서서 확인해야 할 부분은 이겁니다.

setTimeout 함수는 뒷단, 즉 백그라운드에서 돌아가는 함수이기 때문에, 다른 메소드나 동작을 함에 있어서 어떠한 영향을 주지 않습니다. 추후에 다시 설명할테지만, 기억하도록 합시다.

 

 한가지 더! 여기서 진보된 타이머가 존재하는데요, 다음글에서 다루겠습니다.

 그렇다면 소스를 보면서 설명하도록 할게요 ^^

 


소스(Source)

소스다운 Doit.zip

 

이미지 파일 3개와 html파일 1개 총 4개의 파일이 존재합니다.

 

소스 사용방법은 모든 파일이 동일 경로내 즉 , 같은 폴더안에 존재해야 합니다.

그렇다면 이상없이 실행 가능할 것입니다. 

 

<HTML>
<HEAD>
<TITLE>자바스크립트를 활용한 타이머</TITLE>
</HEAD>
<SCRIPT language="javaScript">
 1. var timerID;
 2. var arrImage=new Array();
 arrImage[0]="num1.png";
 arrImage[1]="num2.png";
 arrImage[2]="num3.png";

 

 function image_onclick(){
 3.   timerID=setTimeout("change_image()", 2000);
 4.   alert("배너를 시작합니다.");
 }
 
 5. function change_image(){
      var newImageNum=Math.round(Math.random()*2);
      while(true){
           if(document.banner.src.indexOf(arrImage[newImageNum]) >= 0){
                newImageNum=Math.round(Math.random()*2);
           }else{
                document.banner.src = arrImage[newImageNum];
                break;
           }
      }
 6.   timerID=setTimeout("change_image()", 2000);
 }
 
 function stop_banner(){
 7.    alert("방금 정지한 타이머의 식별자(ID)는 "+timerID+"입니다.");
 8.    clearTimeout(timerID);
 }
</SCRIPT>
<BODY>
 setTimeout()을 이용한 예제입니다.<br>
 이미지를 클릭하시면 2초뒤에 다음 이미지로 바뀌게 됩니다.<br>
  <a href="javascript:image_onclick()" onfocus=this.blur();><image name=banner src="num1.png" width=400 border=0></a>
 <input type=button value=중지 onclick=stop_banner()>
</BODY>
</HTML>

 


소스설명

1. setTimeout()을 담을 변수 선언

var timerID;

- 이후에 setTimeout()의 식별자를 담을 변수입니다.

전역변수로 선언함으로써, 이후에 clearTimeout()을 활용할 수 있습니다.

 

2. 이미지 배열 선언

var arrImage=new Array();

- 이미지를 담고 있는 배열입니다. 따로 설명은 않겠고, 관련글 1번에 가시면 관련된 내용을 확인할 수 있습니다.

 

3. setTimeout()함수 선언

timerID=setTimeout("change_image()", 2000);

- setTimeout 함수 입니다.

첫번째 인자로 같은 문서내 change_image() 함수를 부르도록 했습니다.

두번째 인자는 2000 으로 2초뒤 실행됨을 의미합니다.

 

4. setTimeout()후 메시지 출력

alert("배너를 시작합니다.");

- 배너를 시작한다는 알림 메시지 입니다.

소스를 실행시켜 보면 아시겠지만, 배너를 클릭함(시작)과 동시에 메시지가 뜨게 됩니다.

여기서 눈여겨 봐야 할 점이 이겁니다. 위에서 설정한 2초가 지나야 이 메시지가 나오는 것이 아니죠!?

이는 setTimeout() 함수가 백그라운드에서 돌아가기 때문이죠. 꼭 확인합시다.

 

5. 이미지 변환 부분

function change_image(){
    var newImageNum=Math.round(Math.random()*2);
    while(true){
        if(document.banner.src.indexOf(arrImage[newImageNum]) >= 0){
            newImageNum=Math.round(Math.random()*2);
        }else{
            document.banner.src = arrImage[newImageNum];
            break;
        }
    }

- 이미지를 불러오고 바꿔주는 메소드입니다. 관련글 1번을 참고하시면 되겠습니다.

 

6. 재귀 호출

timerID=setTimeout("change_image()", 2000);

- 첫번째 setTimeout 함수와 다른점은 change_image() 함수 내에서 다시 change_image()함수를 불러냈다는 점입니다.

핵심이라면 핵심일 수 있는 이부분은 재귀(Recursive) 함수의 형태로 나타낸건데요,

 이로써 이미지를 바꾸는 change_image() 함수가 한번의 실행에 그치는 것이 아니라, 계속적으로 실행이 되도록 하였습니다.

재귀함수에 대해서는 다른 내용을 찾아보심이 좋을 것 같습니다.

 

7. setTimeout() 식별자 출력

alert("방금 정지한 타이머의 식별자(ID)는 "+timerID+"입니다.");

- setTImeout() 함수는 특별한 식별자를 반환한다고 위에서 말씀드렸었는데요.

이부분에서 확인할 수 있습니다. 이렇게 값을 찍는 것을 보면 1, 2, 3 순서대로 식별자 값을 갖는다고 할 수 있습니다.

 

8. 타이머 정지

clearTimeout(timerID);

- 이 메소드가 어디에 연결되어 있는지 확인 가능하신가요? 네, 그렇습니다 ^^

중지 버튼에 연결되어 있는 함수 입니다. 그렇다면 다들

 

"아~ 이런 기능을 갖는 함수구나"

 

라고 하실텐데요 ^^. 맞습니다. 백그라운드에서 돌아가고 있는 setTimeout() 함수를 정지시키는 함수입니다.

 

 여기서 들어가는 인자는 setTimeout()함수에서 반환한 식별자 값이구요.

그 식별자를 가지고 "중지"를 시킵니다.


List of Articles
번호 제목 날짜 조회 수
247 유효한 링크인지 확인하는 JAVASCRIPT 2019.01.16 112025
246 [jQuery] 상위부터 차례로 지역 선택하기 2014.03.01 45996
245 Javascript - 이미지 미리보기 회전되어 나옴(EXIF) file 2021.03.09 36319
244 javascript 인쇄 미리보기, 출력, 페이지 설정 등 2014.03.01 32525
243 Checkbox : 체크박스 체크여부 확인 file 2015.06.19 19010
242 날짜 및 시간 입력 구현하기, Bootstrap DateTimePicker file 2017.04.06 16540
241 공백 검사 함수 2015.06.19 14603
240 선택(CheckBox) 된 Row 삭제 - 화면에서 추가된 Row 2015.04.28 13541
239 'focus', 엔터 누르고 이동하자! file 2015.02.03 12857
238 라디오버튼 선택 체크여부 radio checked 2014.03.01 12669
237 셀렉트(select) change Ajax 이벤트 2016.12.23 12581
236 input type file multiple list (파일 업로드 리스트 확인) file 2016.11.17 12435
235 간단한 동적 SELECT 박스 구현하기 2016.10.06 12368
234 GET방식으로 전송시 특수문자함께 전송하는 방법 2016.12.22 12344
233 텍스트박스(input type = "text") 숫자 증가, 감소 시키기 - 쇼핑몰 주문 수량 file 2015.06.19 12285
232 창 크기 최대화 시키기 file 2015.06.19 12227
231 [jQuery] 실시간 검색어 순위 순서대로 보여주기 2014.03.01 12017
230 jquery 메뉴 - 아래로 한번에 전체가 펼처짐 file 2015.04.06 11698
229 'Array', 배열 및 다차원 배열 선언에 대해 알아보자! 2015.02.03 11110
228 랜덤 배너 노출 스크립트 2019.04.29 11042
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved