2016-12-02 21 views
-1

なぜclearInterval()が機能しないのですか?私は何を間違えているのですか? onclickの機能ではなく、グローバル変数にスコープを作るJavascript clearIntervalがタイマーで機能しない

var s = 60; 
var timer = null; 

function Ftimer(){ 
    document.getElementById("sec").innerHTML = s--; 
} 

document.getElementById("start").onclick = function() { 
    var timer = setInterval(function(){ Ftimer() }, 1000); 

} 

document.getElementById("stop").onclick = function() { 
    clearInterval(timer); 
} 
+1

デバッグをごコード。 'clearInterval'行にブレークポイントを置きます。 'timer'の値を調べてください。その後、なぜそれがnullであるかについて本当のことを考えてください。 –

+0

'timer'は常に' null'です。 'setInterval'の戻り値を別のローカルな' timer'変数に代入します。 – Quentin

+0

'onclick'関数で' var'を削除します。 – JulCh

答えて

1

これはあなたがここにあなたの最初のtimer変数を上書きによるものである:

document.getElementById("start").onclick = function() { 
    // this clobbers your previous `timer` assignment 
    var timer = setInterval(function(){ Ftimer() }, 1000); 

} 

をだから、単にvarを除去することによって、それを修正し、外側を使用するには、timer変数スコープ:

document.getElementById("start").onclick = function() { 
    // this assigns to your previous `timer` 
    timer = setInterval(function(){ Ftimer() }, 1000); 

} 
2

var timer ...私は物事の束を試みたが、彼らはうまくいかないようです。

timer = setInterval(Ftimer, 1000); 
関連する問題