Cleartimeout을 사용하여 타임 아웃 이벤트를 취소합니다
-
19-09-2019 - |
문제
다음 코드가 있지만 명확한 타임 아웃은 작동하지 않으며 이유를 이해할 수 없습니다. 누구든지 아이디어가 있습니까? (프로토 타입 프레임 워크 사용)
function foo() {
$("navigation").observe('mouseover',
function (event) {
clearTimeout(bar);
}
).observe('mouseout',
function (event) {
setTimeout(bar, 1000);
}
);
}
function bar() {
alert("hi");
}
해결책
결과를 저장해야합니다 setTimeout
변수에서 사용합니다 clearTimeout
기능이 아닌 변수를 지우려면 다음과 같습니다.
var timer;
function foo() {
$("navigation").observe('mouseover',
function (event) {
clearTimeout(timer);
}
).observe('mouseout',
function (event) {
timer = setTimeout(bar, 1000);
}
);
}
function bar() {
alert("hi");
}
다른 팁
때문에 clearTimeout
기능은 논증을 취합니다 반환 에 의해 setTimeout
기능:
var t = null;
function foo() {
$("navigation").observe('mouseover',
function (event) {
if (t != null) clearTimeout(t);
}
).observe('mouseout',
function (event) {
t = setTimeout(bar, 1000);
}
);
}
function bar() {
alert("hi");
}
Mozilla 문서를 참조하십시오 window.settimeout ():
Settimeout은 실제로 사용할 수있는 참조를 반환합니다. 타임 아웃을 지우십시오:
tId = setTimeout(bar, 1000);
clearTimeout(tId);
제휴하지 않습니다 StackOverflow