質問編集履歴

2

行間を詰めました。自分なりの考えを追加しました。

2020/05/09 23:31

投稿

beginner001
beginner001

スコア29

test CHANGED
File without changes
test CHANGED
@@ -1,386 +1,206 @@
1
- ```javascript
2
-
3
1
  <!DOCTYPE html>
4
2
 
5
-
6
-
7
3
  <html lang="ja">
8
4
 
9
-
10
-
11
5
  <head>
12
6
 
13
-
14
-
15
7
  <meta charset="utf-8">
16
8
 
17
9
 
18
10
 
19
11
  <title>ストップウォッチ</title>
20
12
 
21
-
22
-
23
13
  <style>
24
14
 
25
-
26
-
27
15
  /* ここにCSSを書いていきます。 */
28
16
 
29
-
30
-
31
17
  </style>
32
18
 
33
-
34
-
35
19
  </head>
36
20
 
37
-
38
-
39
21
  <body>
40
22
 
41
-
42
-
43
23
  <div class="container">
44
24
 
45
-
46
-
47
25
  <h1 class="title">StopWatch</h1>
48
26
 
49
-
50
-
51
27
  <h1 id="timerLabel">00:00:00</h1>
52
28
 
53
-
54
-
55
29
  <input type="button" class="myButton" onclick="start()" value="START" id="startBtn">
56
30
 
57
-
58
-
59
31
  <input type="button" class="myButton" onclick="stop()" value="STOP">
60
32
 
61
-
62
-
63
- <input type="button" class="myButton" onclick="reset()" value="RESET">
33
+ <input type="button" class="myButton" onclick="reset()" value="RESET">
64
-
65
-
66
34
 
67
35
  </div>
68
36
 
69
-
70
-
71
37
  <script>
72
38
 
73
-
74
-
75
39
  var status = 0; // 0:停止中 1:動作中
76
40
 
77
-
78
-
79
41
  var time = 0;
80
42
 
81
-
82
-
83
43
  var startBtn = document.getElementById("startBtn");
84
44
 
85
-
86
-
87
45
  var timerLabel = document.getElementById('timerLabel');
88
46
 
89
-
90
-
91
-
92
-
93
-
94
-
95
47
  // STARTボタン
96
48
 
97
-
98
-
99
49
  function start(){
100
50
 
101
-
102
-
103
51
  status = 0;
104
52
 
105
-
106
-
107
53
  status = 1;
108
54
 
109
-
110
-
111
55
  // スタートボタンを押せないようにする
112
56
 
113
-
114
-
115
57
  startBtn.disabled = true;
116
58
 
117
-
118
-
119
-
120
-
121
-
122
-
123
59
  timer();
124
60
 
125
-
126
-
127
- }
61
+ }
128
-
129
-
130
-
131
-
132
-
133
-
134
62
 
135
63
  // STOPボタン
136
64
 
137
-
138
-
139
65
  function stop(){
140
66
 
141
-
142
-
143
67
  // 停止中にする
144
68
 
145
-
146
-
147
69
  status = 0;
148
70
 
149
-
150
-
151
71
  // スタートボタンを押せるようにする
152
72
 
153
-
154
-
155
73
  startBtn.disabled = false;
156
74
 
157
-
158
-
159
- }
75
+ }
160
-
161
-
162
-
163
-
164
-
165
-
166
76
 
167
77
  // RESETボタン
168
78
 
169
-
170
-
171
79
  function reset(){
172
80
 
173
-
174
-
175
81
  // 停止中にする
176
82
 
177
-
178
-
179
83
  status = 0;
180
84
 
181
-
182
-
183
85
  // タイムを0に戻す
184
86
 
185
-
186
-
187
87
  time = 0;
188
88
 
189
-
190
-
191
89
  // タイマーラベルをリセット
192
90
 
193
-
194
-
195
91
  timerLabel.innerHTML = '00:00:00';
196
92
 
197
-
198
-
199
93
  // スタートボタンを押せるようにする
200
94
 
201
-
202
-
203
- startBtn.disabled = false;
95
+ startBtn.disabled = false;
204
-
205
-
206
-
96
+
207
- }
97
+ }
208
-
209
-
210
-
211
-
212
98
 
213
99
 
214
100
 
215
101
  function timer(){
216
102
 
217
-
218
-
219
103
  // ステータスが動作中の場合のみ実行
220
104
 
221
-
222
-
223
105
  if (status == 1) {
224
106
 
225
-
226
-
227
107
  setTimeout(function() {
228
108
 
229
-
230
-
231
109
  time++;
232
110
 
233
-
111
+ // 分・秒・ミリ秒を計算 var min = Math.floor(time/100/60); var sec = Math.floor(time/100); var mSec = time % 100;
112
+
234
-
113
+ var min = Math.floor(time/1000);
114
+
235
-
115
+ var sec = Math.floor(time/100-time/1000);
116
+
236
-
117
+ var mSec = time%100;
118
+
237
-
119
+ // 分が1桁の場合は、先頭に0をつける
120
+
238
-
121
+ if (min < 10) min = "0" + min;
122
+
123
+ // 秒が60秒以上の場合 例)89秒→29秒にする
124
+
125
+ if (sec >= 60) sec = sec % 60;
126
+
127
+ // 秒が1桁の場合は、先頭に0をつける
128
+
129
+ if (sec < 10) sec = "0" + sec;
130
+
131
+
132
+
133
+ // ミリ秒が1桁の場合は、先頭に0をつける
134
+
135
+ if (mSec < 10) mSec = "0" + mSec;
136
+
137
+
138
+
239
- // 分・秒・ミリ秒計算
139
+ // タイマーラベル更新
140
+
240
-
141
+ timerLabel.innerHTML = min + ":" + sec + ":" + mSec;
142
+
143
+
144
+
241
-
145
+ // 再びtimer()を呼び出す
146
+
147
+ timer();
148
+
149
+
150
+
151
+ }, 10);
152
+
153
+
154
+
155
+ }
156
+
157
+
158
+
159
+ }
160
+
161
+
162
+
163
+ </script>
164
+
165
+
166
+
167
+ </body>
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ https://codeforfun.jp/javascript-stopwatch/ からの引用です。
176
+
177
+ この記述の最後の function timer{}の部分が理解できません。
178
+
179
+ setTimeout関数 (処理内容、実行タイミング)
180
+
181
+                  ↓
182
+
183
+               ここは10だから10ミリ秒、つまり10分の1秒と考える。
242
184
 
243
185
  var min = Math.floor(time/100/60);
244
186
 
245
-
246
-
247
187
  var sec = Math.floor(time/100);
248
188
 
249
-
250
-
251
189
  var mSec = time % 100;
252
190
 
253
191
 
254
192
 
255
-
256
-
257
-
258
-
259
- // 分が1桁の場合は、先頭に0をつける
260
-
261
-
262
-
263
- if (min < 10) min = "0" + min;
264
-
265
-
266
-
267
-
268
-
269
-
270
-
271
- // 秒が60秒以上の場合 例)89秒→29秒にする
272
-
273
-
274
-
275
- if (sec >= 60) sec = sec % 60;
276
-
277
-
278
-
279
-
280
-
281
-
282
-
283
- // 秒が1桁の場合は、先頭に0をつける
284
-
285
-
286
-
287
- if (sec < 10) sec = "0" + sec;
288
-
289
-
290
-
291
-
292
-
293
-
294
-
295
- // ミリ秒が1桁の場合は、先頭に0をつける
296
-
297
-
298
-
299
- if (mSec < 10) mSec = "0" + mSec;
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
- // タイマーラベルを更新
308
-
309
-
310
-
311
- timerLabel.innerHTML = min + ":" + sec + ":" + mSec;
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
- // 再びtimer()を呼び出す
320
-
321
-
322
-
323
- timer();
324
-
325
-
326
-
327
- }, 10);
328
-
329
-
330
-
331
- }
332
-
333
-
334
-
335
- }
336
-
337
-
338
-
339
- </script>
340
-
341
-
342
-
343
- </body>
344
-
345
- ```
346
-
347
- https://codeforfun.jp/javascript-stopwatch/ からの引用です。
348
-
349
- この記述の最後の function timer{}の部分が理解できません。
350
-
351
- setTimeout関数 (処理内容、実行タイミング)
352
-
353
-                  ↓
354
-
355
-               ここは10だから10ミリ秒、つまり10分の1秒と考える。
356
-
357
- var min = Math.floor(time/100/60);
358
-
359
-
360
-
361
- var sec = Math.floor(time/100);
362
-
363
-
364
-
365
- var mSec = time % 100;
366
-
367
-
368
-
369
193
  この記述を自分が分かりやすいように以下のように変えてみました。
370
194
 
371
-
372
-
373
- var min = Math.floor(time/1000);
195
+ var min = Math.floor(time/1000);  ←/1000で分が出ると考えました
374
-
375
-
376
196
 
377
197
  var sec = Math.floor(time/100-time/1000);
378
198
 
379
-
380
-
381
- var mSec = time;
199
+ var mSec = time; ←10分の1秒
200
+
201
+
202
+
382
-
203
+ 何分何秒まではちゃんと表示されますが、最後の10分の1秒が出ません。
383
-
384
204
 
385
205
  すると最後の10分の1秒の部分の表示がおかしくなりました。
386
206
 

1

var mSec = time%100; をvar mSec = time;に直しました。

2020/05/09 23:31

投稿

beginner001
beginner001

スコア29

test CHANGED
File without changes
test CHANGED
@@ -378,7 +378,7 @@
378
378
 
379
379
 
380
380
 
381
- var mSec = time%100;
381
+ var mSec = time;
382
382
 
383
383
 
384
384