2015-11-18 49 views
0

我正在做一個遊戲項目,我正在嘗試做一個大炮充電計時器。我試圖在同一個onClick按鈕上使用setInverval和clearInterval來控制這樣的定時器。開/關一鍵計時器Javascript

這裏是我的代碼:

function playerOneCharge(){ 
    if(pOnePower==0){ 
    pOnePower = setInterval(function(){ myTimer()}, 100); 
    }else{ 
     clearInterval(pOnePower); 
    } 
} 

function myTimer(){ 
    ++pOnePower; 
    console.log(pOnePower); 
}; 

按下按鈕時playerOneCharge被觸發,pOnePower設置爲0

感謝您的幫助!

+3

什麼問題? –

+0

Ops,當我再次單擊按鈕時它會停止運行 –

回答

0

它並沒有停止,因爲您使用相同的變量進行計數和創建間隔。

創建間隔時,將分配unqiue標識並且clearInterval需要該標識清除。

但你所以,當談到給clearInterval他需要間隔ID而不是他得到另一個其中的信息不存在間隔

進行單獨兩個可變

像這種

通過 ++pOnePower增加值ID
var pOnePower=0; 
var intVal=null; 
function playerOneCharge(){ 
    console.log(pOnePower); 
    if(!intVal){ 
    intVal = setInterval(function(){ myTimer()}, 100); 
    }else{ 
     clearInterval(intVal); 
     intVal=null; 
    } 
} 

function myTimer(){ 
    ++pOnePower; 
    console.log(pOnePower); 
}; 

JSFIDDLE

+0

謝謝!它奇妙地工作=) –

+0

我在哪裏接受它? –

+0

檢查紅圈http://s9.postimg.org/ibtt3jeej/Capture.jpg?noCache=1447825332 @ReneRoger –

0

好這裏的問題是您正在使用相同的變量pOnePower遞增變量和定時器變量改變變量別的東西像下面的「測試」

var Test; 
    function playerOneCharge(){ 
     if(pOnePower==0){ 
     Test= setInterval(function(){ myTimer()}, 100); 
     }else{ 
      clearInterval(Test); 
     } 
    } 

    function myTimer(){ 
     ++pOnePower; 
     console.log(pOnePower); 
    };