teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コードを追記いたしました

2016/05/15 08:42

投稿

gzrita
gzrita

スコア236

answer CHANGED
@@ -1,4 +1,87 @@
1
1
  リセットを行う際に`clearInterval( counter );`が無いのが原因の様です。
2
2
 
3
3
  リセットをクリックしても、残り時間が3分に戻るのみで、
4
- タイマーが減っていく処理が続いているみたいですね。
4
+ タイマーが減っていく処理が続いているみたいですね。
5
+
6
+ [追記]コメントを拝見しまして、修正を行ったコードも追記致します。
7
+
8
+ ```HTML
9
+ <!DOCTYPE html>
10
+ <html lang="ja">
11
+ <head>
12
+ <meta charset="UTF-8">
13
+ <title>カウントダウンタイマー</title>
14
+ <script>
15
+ window.onload = function(){
16
+ var time = 10;
17
+ var counter;
18
+ var min = document.getElementById("min");
19
+ var sec = document.getElementById("sec");
20
+ var start = document.getElementById("start");
21
+ var stop = document.getElementById("stop");
22
+ var reset = document.getElementById("reset");
23
+
24
+ start.onclick = function() {
25
+ toggle();
26
+ counter = setInterval( count, 1000 );
27
+ }
28
+ stop.onclick = function() {
29
+ toggle();
30
+ clearInterval( counter );
31
+ }
32
+
33
+ reset.onclick = function() {
34
+ time = 180;
35
+ min.innerHTML = Math.floor( time / 60 );
36
+ sec.innerHTML = Math.floor( time % 60 );
37
+ //ここから修正箇所です
38
+ clearInterval( counter ); //タイマーを停止させます
39
+ if( start.disabled ) { //タイマーがスタートしていた場合は…
40
+ toggle(); //…ストップをクリックした際と同様にボタンを元に戻します
41
+ }
42
+ //修正箇所はここまでです
43
+ }
44
+
45
+ function toggle() {
46
+ if( start.disabled ) {
47
+ start.disabled = false;
48
+ stop.disabled = true;
49
+ } else {
50
+ start.disabled = true
51
+ stop.disabled = false;
52
+ }
53
+ }
54
+
55
+ function count() {
56
+ if( time === 0 ) {
57
+ sec.innerHTML = 0;
58
+ min.innerHTML = 0;
59
+ toggle();
60
+ //alert("Time UP!");
61
+ document.write("Time UP");
62
+ clearInterval( counter );
63
+ } else {
64
+ time -= 1;
65
+ sec.innerHTML = time % 60;
66
+ min.innerHTML = Math.floor( time / 60 );
67
+ }
68
+ }
69
+ }
70
+
71
+ </script>
72
+ </head>
73
+ <body>
74
+ <div id="timer">
75
+ <p>
76
+ <span id="min">00</span>
77
+ <span id="sec">00</span>
78
+ </p>
79
+ <p>
80
+ <input type="button" id="start" value="スタート">
81
+ <input type="button" id="stop" value="ストップ" disabled>
82
+ <input type="button" id="reset" value="リセット">
83
+ </p>
84
+ </div>
85
+ </body>
86
+ </html>
87
+ ```