2016-11-24 21 views
-3

通常のタイマーをJavascriptで作成しようとしましたが、チュートリアルの助けを借りて何かをコーディングし始めました。タイマーが起動しない

私はチュートリアルと同じようにしましたが、タイマーは実際には動作しません。理由はわかりません。

ここ

は私のコードです:私のコードで何が間違っているhttps://jsfiddle.net/adamswebspace/5p1qgsz9/

var time = 0; 
     var running = 0; 

     function startPause() { 
      if(running == 0){ 
       running = 1; 
       increment(); 
      } 
      else{ 
       running = 0; 
      } 
     } 

     function reset(){ 
      running = 0; 
      time = 0; 
      document.getElementById("startPause").innerHTML = "Start"; 

     } 
     function increment() { 
       if(running == 1){ 
       setTimeout(function(){ 
        time++; 
        var mins = Math.floor(time/10/60); 
        var secs = Math.floor(time/10); 
        var tenths = time % 10; 
        document.getElementById("output").innerHTML = mins + ":" + secs + ":" + tenths; 

          }, 100); 
       } 
     } 
</script> 

私はまた、あなたがここにチェックアウトすることができますフィドルを作ったのですか?

+0

を停止するために、あなたは3つの機能を持っているが、どこにもあなたのサンプルでは、​​あなたが実際にそれらのいずれかを呼び出します。ここであなたのサンプルには、フィドルにあるすべてのコードは含まれていないので、読者には混乱します。あなたのフィドルには、JSエラー "startPauseは関数ではありません"があります。これは、関数を呼び出すコードの前に関数を含める必要があるためです。 JSFiddle用語では、Javascriptオプションを変更して、loadTypeが "nowrap - in head"になるようにしてください。 https://jsfiddle.net/5p1qgsz9/1/もう1つの問題は、タイマーが1回だけ実行されることです。setTimeoutの代わりにsetIntervalが必要だと思います。 – ADyson

+1

私はあなたが必要と思うのはsetTimeoutではなくsetIntervalです。 setTimeoutは一度だけ実行します。 – user2427829

+0

それは私のフィドルで試してみて、私のタイマーのためにsetTimeoutを試してみてください。ありがとうございました – adamswebspace

答えて

0

私は少しあなたのコードをクリアし、代わりのsetIntervalのsetTimeoutメソッドを使用。 clearIntervalを使用する必要が ノートでは、タイマー

var time = 0; 
var running = 0; 
var timer = null; 
function increment() { 
    time++; 
    var mins = Math.floor(time/10/60); 
    var secs = Math.floor(time/10); 
    var tenths = time % 10; 
    document.getElementById("output").innerHTML = mins + ":" + secs + ":" + tenths; 
} 
function startPause() { 
    if (running === 0) { 
     running = 1; 
     timer = setInterval(increment, 1000); 
    } else { 
     running = 0; 
     clearInterval(timer); 
    } 
} 

function reset() { 
    running = 0; 
    time = 0; 
    document.getElementById("startPause").innerHTML = "Start"; 

} 
+0

私の問題を理解するのに大いに助けてくれてありがとう! :) – adamswebspace

+0

あなたは歓迎です –

0

は、あなたのコード内の関数を見つけることonclickためには、以下の

var vm = this; 

vm.startPause = function startPause() { 
    if (running == 0) { 
    running = 1; 
    vm.increment(); 
    } else { 
    running = 0; 
    } 
} 

https://jsfiddle.net/f7hmbox7/

0

のような機能をバインドする必要があります。これは、JSFiddle用の<script>タグで指定する必要があります。

あなただけ

<script> 

/** JS Here */ 

</script> 

を追加することができ、それが動作します。

JSからのすべてのエラーは、ブラウザインスペクタのコンソールに表示されることに注意してください。

https://jsfiddle.net/dzskncpw/

+0

ありがとうございました。 – adamswebspace

関連する問題