강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

setTimeout,setinterval 에대한.스크립..이해
작성자 : 99 단국강토
등록날짜 : 2009.02.10 09:51
2,923

tid=setTimeout(a,b)은 b초후에 a함수를 실행합니다. 이것은 1회만 실행하는거구요.
tid=setInterval(a,b)는 b초마다 a함수를 실행합니다. 이것은 무한루프가 되는거지요,

둘모두 실행후 중단할때에는 clearTimeout(tid) 와 clearInterval(tid) 로서
실행을 중단합니다.

tid는 setTimeout과 setInterval을 실행후에 리턴되는 타이머 ID구요,

이 타이머ID로서 타이머를 중단할 수 있는거지요.

 

setTimeout을 이용한 반복문의 예제

<script>

cnt=0;

 function a(){

  if(cnt<10){

  cnt++;

  alert(cnt);

  tid=setTimeout(a,1000); //1초후 a함수 실행 - 재귀호출

  } else

    clearTimeout(tid);

 }

a();

</script>

 

setInterval을 이용한 반복문의 예제

<script>

cnt=0;

 function a(){

 if(cnt<10){

  cnt++;

  alert(cnt);

  } else

    clearInterval(tid);

 }

  tid=setInterval(a,1000); //1초후 a함수 실행 - 재귀호출

</script>

----------------------------------------------------------------------
자바스크립트에서 setInterval을 사용 하셨다면

어떠한 이벤트를 만들어서 해제를 시켜야 합니다.

예를 들어

setInterval("ex()", 1000)

이렇게 실행을 했다면 함수가 인터발 간격으로 실행 되는 것을 해제하기 위해 인터발 아이디를

변수로 만들어 줍니다.

testex = setInterval("ex()", 1000)

이렇게 사용 할때 동일한 함수 내에서 사용시는 문제가 되지 않지만

버튼등을 이용해서 이벤트를 해제하려면 전역으로 두셔야 합니다.

해제 하는 방법은

<input type=button value="해 제" onClick="clearex()">

위에 버튼을 누르면 clearex() 함수를 실행 시키고 그곳에

function clearex() {
clearInterval(testex)
}
------------------------------------------------------------
시작버튼 누르면 초기화와 함께 다시 시작되도록 했습니다.

문자가 나타난 즉시 흐르는 시간을 보이도록 하고 문자가 사라지는 1초내에서만

시간을 측정하도록 했습니다.

테이블을 클릭하면 바로 흐른시간을 보여주도록 했습니다.

a가 나타나기 전이나 없어진 후에는 클릭해도 아무 반응 없도록 했습니다.

문자를 추가해도 이상없고 a문자를 더 추가해도 a문자에서는 똑같이 반응하게 했습니다.

 

<script>
var a = new Array("h", "o", "w", "a", "r", "e", "y", "o", "u");

var react="a";
var flag=0;
var tid=0;
var tid2=0;
var start=0;
var speed=0;

 

//1초에 한 번씩 flag값을 증가시키며 flag값을 이용해 각 문자를 순서대로 보여줌

//if(st) 구문은 초기화 시작

//if(view.innerText==react) 구문은 시작시간을 저장하고 타이머가 작동

function change(st) {
  if(st) {
    flag=0;
    clearTimeout(tid);
    msiv.innerText="";
  }
  view.innerText=a[flag++];
  if(view.innerText==react) {
    start=new Date();
    milli();
  }
  tid=setTimeout('change()',1000);
  if(a.length-1 < flag) clearTimeout(tid);
}

 

 

//타이머

//999미리초에 시작했고 끝이 200미리초라면

//현재에서 과거를 빼야하는데 음수가 발생하므로

//초단위까지 합해서 계산함

function milli() {
  now=new Date();
  nowval=now.getSeconds() * 1000 + now.getMilliseconds();
  startval=start.getSeconds() * 1000 + start.getMilliseconds();
  speed=nowval-startval;
  msiv.innerText=speed+" msec";
  tid2=setTimeout('milli()',10);
  if(speed >999) clearTimeout(tid2);
}

 

//테이블의 onClick 이벤트로 작동

//if구문에 의해 현재 문자가 react  값일 때만 타이머를 멈추고

//타이머에서 계산한 시간을 보여줌

function check() {
  if(view.innerText==react) {
    clearTimeout(tid2);
    alert(speed+" msec");
  }
}
</script>

<input type="button" value="시작" onClick="setTimeout('change(1)',1000)">

<br>시작 버튼을 누른 후 문자 a가 나타나면 사각형테이블 내부 아무곳이나 클릭해 주세요
<table border="1" width="100" height="100" onClick="check()">
<tr>
<td align="center">

<font size="+6">

<div id="view">
</div>

</font>
</td>
</tr>
</table>
<div id="msiv"></div>

---------------------------------------------
a배열을 1초에 한번씩 보여줄 위치를 div로 미리 선언하고 시작버튼을 누르면 setInterval,innerText를 사용하여 배열요소를 순서대로 해당div에 보여주며 도중에 확인버튼이 눌리면 결과를 해당div에 보여주도록 만들었습니다.

 

1. 1초에 한번씩 함수를 호출 ( setInterval(함수명,1000) )

2. 응답시간의 측정 : 끝밀리초-시작밀리초 ( 시작시점의 new Date() - 끝시점의 new Date() )

※ Date객체를 마이너스(-)연산자로 연산하면 두 날짜의 차이가 밀리초로 계산되어 반환됩니다. Date객체의 밀리초를 보고 싶으면 .valueOf() 나 .getTime()을 사용하시면 됩니다.

 

<div id="msg" style="height:100;font-size:20"></div><!--폰트 및 영역의 크기를 미리 설정함-->
<input type="button" value="시작" onclick="mystart()"><!--setInterval를 이용하여 배열요소를 1초에 한문자씩 div에 보여줌-->
<input type="button" value="확인" onclick="mystop()"><!--setInterval로 설정된 메소드를 clear시킴-->
<script type="text/javascript">
var a=new Array("h", "o", "w", "a", "r", "e", "y", "o", "u");  //배열요소를 선언함
var start=stop=tid=idx=0;  //변수선언 및 초기화
function mystart() {  //시작버튼이 눌린 경우
  document.all.msg.innerText="";  //div영역을 비움
  if (tid>0) clearInterval(tid);  //더블액션인경우 interval호출 함수를 해제
  idx=0;  //배열순번 변수를 초기화
  tid=setInterval(setText,1000);  //1초(1000밀리초)에 한번씩 setText함수를 호출함
}
function mystop() {  //확인버튼이 눌린 경우
  stop = (new Date()).valueOf();  //버튼이 눌린시각을 stop변수에 담는다(.valueOf()는 생략 가능)
  clearInterval(tid);  //interval함수를 clear시킴
  myresult();  //결과출력 함수를 호출
}
function setText() {  //1초에 한번씩 호출되는 메소드
  if (idx<a.length) {  //배열의 길이가 idx변수보다 크면
    if (a[idx]=="a") {  //idx번째 배열요소가 "a"이면
      start=(new Date()).valueOf();  //start변수에 현재 시각을 담는다(.valueOf()는 생략 가능)
    }
    document.all.msg.innerText+=a[idx++];  //div영역에 idx번째 배열요소를 보여주고 idx를 1증가함
  } else {
    mystop();  //배열요소의 호출이 끝났으면 멈춤(결과출력함수를 호출하도록 하였음)
  }
}
function myresult() {  //결과출력 함수
  document.all.msg.innerHTML+="<hr>결과 : ";
  if (start>0) {  //"a"문자가 보여졌으면(start변수에 날짜가 담겨졌으면)
    document.all.msg.innerHTML+="<br>a문자가 나온이후로 <font color=red><b>"+(stop-start)+"</b></font>밀리초만에 확인버튼이 눌려졌습니다.";  //stop시각에서 start시각을 뺀다(결과는 밀리초임)
  } else {
    document.all.msg.innerHTML+="<br>a문자가 나오기 전입니다.";  //"a"문자가 보여지기전에 확인버튼이 눌린 경우 보여지는 메세지
  }
}
</script>

[출처] 웹디황용

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3015 새창,새창내려온후진동 99 단국강토 02.10 3071
3014 FORM테그의 사용속성들 99 단국강토 02.10 1390
3013 FORM테그의 사용속성들 99 단국강토 02.10 2093
3012 setTimeout,setinterval 에대한.스크립..이해 99 단국강토 02.10 2525
열람중 setTimeout,setinterval 에대한.스크립..이해 99 단국강토 02.10 2924
3010 소스를 간편하게 만들어 주는 with문 99 단국강토 02.10 1223
3009 소스를 간편하게 만들어 주는 with문 99 단국강토 02.10 1613
3008 innerText 활용(마우스 온/오버) 99 단국강토 02.10 2149
3007 innerText 활용(마우스 온/오버) 99 단국강토 02.10 1407
3006 getElementById와 getElementsByName 99 단국강토 02.10 1977
3005 getElementById와 getElementsByName 99 단국강토 02.10 1968
3004 event.srcElement 99 단국강토 02.10 1421
3003 event.srcElement 99 단국강토 02.10 1601
3002 플래시에서 어떤 변수 명명법을 사용하는 것이 좋을까? M 최고의하루 02.10 2333
3001 include 서브메뉴 컨트롤시 | ♣ Flash MX 2004 M 최고의하루 02.10 2340
3000 [플래시] 유용한 플래시 팁 모음~!! M 최고의하루 02.10 1787
2999 플래시/플래시학원/플래시강좌]심벌(Symbol)만들고 편집 M 최고의하루 02.10 1634
2998 플래시/플래시학원/플래시강좌]Arrow Tool M 최고의하루 02.10 1593
2997 플래시에서 폰트를 깨끗하게 사용하는 팁 M 최고의하루 02.10 1343
2996 웹서핑중에 이쁜 플래쉬나 스위시글 내컴에 저장하는 M 최고의하루 02.10 1687
2995 SWF 플래쉬 동영상 삽입하기 M 최고의하루 02.10 2026
2994 플래시에서 자바스크립트 사용하기 M 최고의하루 02.10 2114
2993 플래시에서 외부 사운드 로드 M 최고의하루 02.10 2467
2992 가로메뉴 M 최고의하루 02.10 2316
2991 플래시 MX M 최고의하루 02.10 1969
2990 컴덱스메뉴 액션 스크립트 M 최고의하루 02.10 2077
2989 로딩막대 M 최고의하루 02.10 1542
2988 플래시로 3차원 환영은 어떻게 그리나?(최종) M 최고의하루 02.10 1925
2987 바디와 선 99 단국강토 02.09 1706
2986 Table 태그 (1)-table 99 단국강토 02.09 2391
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취