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);
}
};
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 |