메뉴 건너뛰기

조회 수 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
번호 제목 날짜 조회 수
167 Location 객체 - URL 파싱 - URL에서 전달인자 추출하기 함수 작성 file 2015.06.19 8523
166 location.href 로 새창 여는 방법 (target=_blank 효과) 2015.06.19 9393
165 Node.js와 npm(+ npx)의 개념 2023.01.20 134
164 onkeypress 키보드 이벤트 처리하는 법 – text, textarea 2016.09.21 7001
163 opener 값전달, 함수실행.(자식창에서 부모창으로 값전달, 함수실행) 2021.03.26 1437
162 response.setHeader 2016.12.22 7358
161 select 당일 날짜 출력 file 2014.03.01 5780
160 SelectBox에서 선택된 항목의 텍스트, 값 가져오기 선택 옵션 넣기. 2018.07.04 4014
159 setTimeout 대체 스크립트 함수 (일시멈춤) 2016.12.22 6241
158 setTimeout() / clearTimeout() / setInterval() 2016.12.22 8162
157 span - 동적으로 글자 바꾸기, 보이기 안보이기 2019.01.16 1446
156 split, join, replace, replace_all 2021.03.26 204
155 Textarea 글자수 체크 2014.03.01 5651
154 textarea의 글자수 제한 2014.02.27 6161
153 top 부분이 고정되는 슬라이딩 메뉴입니다 file 2014.03.01 5752
152 utf-8일때 alert 한글 깨짐 해결 2021.03.26 3556
151 [INPUT BOX] 텍스트박스(INPUT 박스) 가 동적으로 추가,삭제됩니다 2017.02.19 8526
150 [jQuery] textarea 글자수 카운트 2014.03.01 7420
149 [jQuery] 상위부터 차례로 지역 선택하기 2014.03.01 45966
148 [jQuery] 실시간 검색어 순위 순서대로 보여주기 2014.03.01 12017
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved