我在页面中有两个jfunction,
function function1(){
//codes
setTimeout("function1()",5000);
}
和
function function2(){
//codes
setTimeout("function2()",5000);
}
时调用函数
<div class="navPanel">
<div onclick="function1();">Link1</div>
<div onclick="function2();">Link2</div>
</div>
我需要在调用function2时停止使用function1,反之亦然......怎么做..... ???帮助...
答案 0 :(得分:4)
将超时设置为变量,然后允许您使用clearTimeout函数。
var timeout1 = {};
var timeout2 = {};
function function1(){
//codes
if(timeout2){
clearTimeout(timeout2);
}
timeout1 = setTimeout("function1()",5000);
}
function function2(){
//codes
if(timeout1){
clearTimeout(timeout1);
}
timeout2 = setTimeout("function2()",5000);
}
答案 1 :(得分:2)
你可以这样做,但不推荐......
function function1(){
//codes
setTimeout(function1,5000);
function2 = function() {}
}
如果您只是想停止下次执行setTimeout
来电,那么只需从setTimeout
获取句柄并致电clearTimeout()
。
答案 2 :(得分:1)
存储setTimeout()
来电中的返回值,以便您可以clearTimeout()
停止这些值:
var function1Timeout,
function2Timeout;
function function1(){
//codes
if(function2Timeout) clearTimeout(function2Timeout);
function1Timeout = setTimeout(function1,5000);
}
function function2(){
//codes
if(function1Timeout) clearTimeout(function1Timeout);
function2Timeout = setTimeout(function2,5000);
}
请注意,我已将setTimeout()
调用更改为传递函数引用,而非字符串。