setTimeout 함수는 일반적으로 지정된 시간이후 주어진 함수를 실행한는 타이머와 같은 역할을 한다. 인터넷상에서 검색해 보면 수많은 사용방법이 나온다. 일반적인 사용방법은 아래와 같다.
function test(){
alert("테스트입니다.");
}
setTimeout("test", 1000);
alert("테스트입니다.");
}
setTimeout("test", 1000);
그럼 1초후 "테스트입니다." 라는 alert 창이 뜰것이다. 그럼 함수에 인자(Parameter)를 넘길때는 어떻게 하는가?
아래와 같이 사용하면 된다.
function test(msg){
alert(msg);
}
setTimeout("test('테스트입니다.')", 1000);
var vMsg = "또 다른 테스트입니다.";
setTimeout("test('+ vMsg +')", 3000);
alert(msg);
}
setTimeout("test('테스트입니다.')", 1000);
var vMsg = "또 다른 테스트입니다.";
setTimeout("test('+ vMsg +')", 3000);
그럼 정확히 1초후 "테스트입니다." 라는 alert 창과 함께 "또 다른 테스트입니다." 라는 alert 창이 3초후에 뜰것이다. 여기까지는 setTimeout 의 사용법으로 많이 포스팅 되고 있다. 그렇다면 Object 형 인자를 넘기려면 어떻게 해야 할까?
의외로 간단하다.
function test(obj){
alert(obj.value);
}
function fnClick(obj){
setTimeout(function(){
test(obj);
}, 1000);
}
<input type="button" value="Hello" onclick="fnClick(this);">
alert(obj.value);
}
function fnClick(obj){
setTimeout(function(){
test(obj);
}, 1000);
}
<input type="button" value="Hello" onclick="fnClick(this);">
조금 억지스러워 보일 예제이다. 좋은 예제가 생각안나 그냥 설명하겠다. 소스만 보시고도 감 잡으셨겠지만 Hello 란 버튼을 누르면 1초후 버튼의 값인 "Hello"를 alert 창으로 띄워준다.
두번째 예제를 보고 Object 형 변수를 어떻게 넘길지 고민하시는 분들께 도움이 되었으면 한다.