1

ページに 2 つの 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 の動作を停止する必要があります。ヘルプ...

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 に答える