1

我在一个页面中有两个 jfunctions,

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>

当调用函数 2 时,我需要停止函数 1 的工作,反之亦然......怎么办......???帮助...

4

3 回答 3

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);
}
于 2013-01-31T11:06:21.957 回答
2

你可以这样做,但不推荐......

function function1(){
    //codes
    setTimeout(function1,5000);

    function2 = function() {}
}

如果您只想停止调用的下一次执行setTimeout,那么只需从setTimeout和调用中获取句柄clearTimeout()

于 2013-01-31T11:05:37.893 回答
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()调用更改为传递函数引用,而不是字符串。

于 2013-01-31T11:06:55.077 回答