JavaScript - 如何停止从另一个函数处理函数

时间:2013-01-31 11:02:45

标签: javascript function

我在页面中有两个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,反之亦然......怎么做..... ???帮助...

3 个答案:

答案 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()调用更改为传递函数引用,而非字符串。