setTimeout 에 파라미터를 넘기는 법

1. string로 만들어 호출하는 법
   setTimeout( fn 및 param에 대한 스트링, 딜레이시간)   

* 기본 호출

    setTimeout("updateTimeout('value')", 5000);

 * 반복 호출

   setTimeout("updateTimeout(0)", 5000);

   function updateTimeout(i) {

       if (i == 100) return;

       $("#updateVal").val(i++);

       setTimeout("updateTimeout('"+i+"')"5000);
   }

       
    
 2. 외부에서 파라미터 전달(전역변수 사용과 큰 차이가 없다)

 for (var i = 1; i < 100; i++) {

          (function(i) {
               setTimeout(function() {
                     $("#updateVal").val(i);
                }, i * 5000);
         }(i));
    }

 
3. setTimeout 을 재구현

   기본적으로 setTimeout  의 3번째 파라미터 부터는 setTimeout에서 호출하는 function 의 파라미터로 전달 된다. 단. IE 를 제외한 다른 브라우져에서는 전달이 가능하다.

즉 아래와 같은 형태가 된다.

  setTimeout(fn, delayTime , param1, param2 ...)  

  fn(param1, param2 ...)
  {
     내부 구현
  }


  IE 에서 이기능을 제공하기 위해서는  setTimeout 을 재구현하여 사용할 수가 있다.

  var orgTimeout = setTimeout;

   window.setTimeout = function() {
      var func, delay;
      func= arguments[0];
      delay= arguments[1];

      if (arguments.length > 2) {
         var arg = Array.prototype.slice.call(arguments, 2);
         return orgTimeout (function() {
                    func.apply(null, arg);
                }, delay);
       } else {
               return orgTimeout (func, delay);
      }
    };
   
    setTimeout(updateTimeout, 5000, 0);   // 호출가능 해짐


'IT > javascript' 카테고리의 다른 글

String fommat 2  (0) 2015.08.03
javascript 의 arguments  (0) 2014.12.03
javascript 에서 string.format 사용  (0) 2014.11.24
yuicommpressor (js /css 압축)  (0) 2014.11.24
setTimeout , setInterval , clearTimeout , clearInterval 사용  (0) 2014.11.22

+ Recent posts