2016-04-09 12 views
0

こんにちは皆私はタイマーを作っていますが、問題があります。 私が間違っているところ誰かに説明することができますスピードアップしようとしていると、タイマーダウン選択フォームを使用してそれが動作しませんよください最後に、確かにスイッチとjqueryを使用してSELECT FORMの値を変更する方法

スイッチと

これは私のコードです:

HTML:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Title</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 
</head> 
<body> 

`: :

<input id="reset" type="button" value="reset"> 
<input id="pauseButton" type="button" value="Pause"> 
<input id="reprendreButton" type="button" value="Reprendre"> 

<form> 
<select id="bla" > 
<option value="x05">x05</option> 
<option value="x1" selected>x1</option> 
<option value="x2">x2</option> 
<option value="x4">x4</option> 
</select> 
</form> 

`

javascriptの

<script> 





var timer = { 
    totalSeconds: 0, 
    start: function() { 
     var mat = this; 

     this.interval = setInterval(function() { 
      mat.totalSeconds += 1; 

      $("#heure").text(Math.floor(mat.totalSeconds/3600)); 
      $("#min").text(Math.floor(mat.totalSeconds/60 % 60)); 
      $("#sec").text(parseInt(mat.totalSeconds % 60)); 
     }, 1000); 
    }, 





    pause: function() { 

     this.interval = clearInterval(this.interval); 
     this.interval = delete this.interval; 

    }, 

    x05: function() { 

     // this.interval = this.totalSeconds += 2; 
     var mat = this; 

     this.interval = setInterval(function() { 
      mat.totalSeconds += 1/2; 

      $("#heure").text(Math.floor(mat.totalSeconds/3600)); 
      $("#min").text(Math.floor(mat.totalSeconds/60 % 60)); 
      $("#sec").text(parseInt(mat.totalSeconds % 60)); 
     }, 1000); 


    }, 

    x1: function() { 

     // this.interval = this.totalSeconds += 2; 
     var mat = this; 

     this.interval = setInterval(function() { 
      mat.totalSeconds += 1; 

      $("#heure").text(Math.floor(mat.totalSeconds/3600)); 
      $("#min").text(Math.floor(mat.totalSeconds/60 % 60)); 
      $("#sec").text(parseInt(mat.totalSeconds % 60)); 
     }, 1000); 


    }, 

    x2: function() { 

     // this.interval = this.totalSeconds += 2; 
     var mat = this; 

     this.interval = setInterval(function() { 
      mat.totalSeconds += 2; 

      $("#heure").text(Math.floor(mat.totalSeconds/3600)); 
      $("#min").text(Math.floor(mat.totalSeconds/60 % 60)); 
      $("#sec").text(parseInt(mat.totalSeconds % 60)); 
     }, 1000); 


    }, 

    x4: function() { 

     // this.interval = this.totalSeconds += 2; 
     var mat = this; 

     this.interval = setInterval(function() { 
      mat.totalSeconds += 4; 

      $("#heure").text(Math.floor(mat.totalSeconds/3600)); 
      $("#min").text(Math.floor(mat.totalSeconds/60 % 60)); 
      $("#sec").text(parseInt(mat.totalSeconds % 60)); 
     }, 1000); 


    }, 

    Reprendre: function() { 

     this.interval = !this.interval; 
     this.interval = this.start(); 
    }, 

    reset: function() { 

     // clearInterval(this.interval); 

     this.interval = this.totalSeconds -= this.totalSeconds +=1 ; 


    } 

}; 

timer.start(); 


$('#pauseButton').click(function() { timer.pause(); }); 
$('#reprendreButton').click(function() { timer.Reprendre(); }); 
$('#reset').click(function() { timer.reset(); }); 


$(document).ready(function(){ 
    switch($('#bla').val()) { 

     case 'x05': 
      /* $('#bla').click(function() { timer.x05(); }); */ 
      break; 
     case 'x1': 
      /* $('#bla').click(function() { timer.x1(); }); */ 
      break; 
     case 'x2': 
      /* $('#bla').click(function() { timer.x2(); }); */ 
      break; 
     case 'x4': 
      /* $('#bla').click(function() { timer.x4(); }); */ 
      break; 
     default: 
     // 
    } 
}); 

答えて

0

文書の準備ができているときだけ#blaの値をチェックしています。あなたは実行する必要があります。

ここ
$(document).ready(function(){ 
    $('#bla').on('change', function(){ 
    switch($(this.val())) { 
     case 'x05': 
      timer.x05(); 
      break; 
     case 'x1': 
      timer.x1(); 
      break; 
     case 'x2': 
      timer.x2(); 
      break; 
     case 'x4': 
      timer.x4(); 
      break; 
     default: 
      // 
      break; 
     } 
    }); 
}); 

選択ボックスが変更されたとき、あなたが#blaの値をチェックすることになります。一度コメントを外したら、関数を実行します。残りのコードが動作しているかどうかは分かりませんが、selectの値が変更されたときはいつでもスイッチを実行する必要があります。私はCodePenを作った

、これは私が起こっているかもしれない何かを動作させるために、それは簡単だったので、私はJSを書く方法です:

https://codepen.io/dammeul/pen/GZQpqZ?editors=1010

現在の時間は動作しなと、それ一度だけ一時停止し、間隔を再び開始した後、一時停止したくないように見えます。それはうまくリセットされますが、スピードコントロールについてはわかりません。見てみましょう、うまくいけば、これはすべてのための完全な修正のために行く必要があります。

+0

あなたの答えはありがたいですが、まだ動作していません。理由は何ですか? – mathieu

+0

申し訳ありませんが、私はこれに答えたときに遅れました!私はいくつかの編集を行いました。基本的には、変更があったときはいつでもスイッチを実行していて、 '#bla'をクリックするとその機能を実行するクリックイベントを初期化していました。必要なのは、 '#bla'が変わるたびに関数を実行することです。あなたのタイマー機能が正しく動作し、 '.x05'などに当たっている限り、これはうまくいくはずです! – Adam

+0

私は自分のJSを書く方法を書きましたが、あなたがコードを使用していることを書いていますが、いくつかの編集を加えて、あなたのコードの大部分を見てコードペンを追加しました。いくつかのビットは動作しませんが、うまくいけば、私はあなたを始めさせるほど十分に修正しました。 – Adam

関連する問題