0

ボタンクリックのタイマーに問題があります。ボタンをクリックすると startpause() メソッドが呼び出され、タイマーの開始と停止を設定します。ボタンをクリックすると正常に動作しますが(1回クリックしてから別のクリック)、ボタンを何度もすばやくクリックすると、タイマーが2〜3秒でジャンプし始めます。複数のタイマーが実行されているようです..誰か何か考えがありますか....?? ここで時間は私のタイマーメソッドです

function startpause() {

    if(FLAG_CLICK) {
        setTimeout(tim,1000);               
        FLAG_CLICK = false;
    }
    else {
        clearTimeout(ti);
        FLAG_CLICK = true;
    }
}

function tim() { 

    time.innerHTML = t;
    t = t + 1;      
    ti= setTimeout("tim()", 1000);
}
4

3 に答える 3

0

後で操作するために、setTimeout をどこかに保存する必要があります。

var myVar;

function myFunction()
{
  myVar=setTimeout(function(){alert("Hello")},3000);
}

function myStopFunction()
{
  clearTimeout(myVar);
}

参照http://www.w3schools.com/js/js_timing.asp

于 2013-03-08T06:51:54.140 に答える
0

たぶん、これを変更する必要があります:

if(FLAG_CLICK) {
    setTimeout(tim,1000);               
    FLAG_CLICK = false;
}

に:

if(FLAG_CLICK) {
    tim();               
    FLAG_CLICK = false;
}

それは私のために正常に動作するようです

于 2013-03-08T06:53:00.913 に答える
0

これを試して:

// assuming you declared ti and t out here, cuz I hope they're not global

var t = 0;
var ti;    
var running = false;

function startpause() {

    clearTimeout(ti);
    if(!running) {
        ti = setTimeout(tim,1000); 
        running = true;
    } else {
        running = false;
    }
}
function tim() { 
    time.innerHTML = t;
    t = t + 1; 
    ti = setTimeout(tim,1000); 
}

ここで詳細を読むことができます.setTimeout(): https://developer.mozilla.org/en/docs/DOM/window.setTimeout

また、作成したばかりの jsfiddle も参照してください: http://jsfiddle.net/4BMhd/

于 2013-03-08T06:53:43.040 に答える