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

回答編集履歴

3

調整版

2020/09/26 10:32

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -104,4 +104,71 @@
104
104
  <button id="sum">計算</button>
105
105
  <div id="sum_account" ></div>
106
106
  </div>
107
+ ```
108
+
109
+ # 調整版
110
+ ```javascript
111
+ <script>
112
+ 'use strict';
113
+ var current_d=0;
114
+ var prev_d=0;
115
+ window.addEventListener('DOMContentLoaded', ()=>{
116
+ const timer = document.querySelector('#timer');
117
+ const start = document.querySelector('#start');
118
+ const stop = document.querySelector('#stop');
119
+ const reset = document.querySelector('#reset');
120
+ const mintus = document.querySelector('#mintus');
121
+ const math = document.querySelector('#sum');
122
+ const sum_account = document.querySelector('#sum_account');
123
+ let timerId;
124
+
125
+ stop.disabled=true;
126
+
127
+ const format_time=(d)=>{
128
+ const m = parseInt(d/60/1000).toString().padStart(2, '0');
129
+ const s = (parseInt(d/1000)%60).toString().padStart(2, '0');
130
+ const ms = (d%1000).toString().padStart(3, '0');
131
+ return `${m}:${s}.${ms}`;
132
+ };
133
+ start.addEventListener('click',()=>{
134
+ var now=new Date();
135
+ start.disabled=true;
136
+ stop.disabled=false;
137
+ reset.disabled=true;
138
+ timerId=setInterval(()=>{
139
+ current_d=new Date().getTime()-now.getTime()+prev_d;
140
+ timer.textContent=format_time(current_d);
141
+ },10);
142
+ });
143
+ stop.addEventListener('click',()=>{
144
+ start.disabled=false;
145
+ stop.disabled=true;
146
+ reset.disabled=false;
147
+ clearInterval(timerId);
148
+ prev_d=current_d;
149
+ });
150
+ reset.addEventListener('click',()=>{
151
+ current_d=0;
152
+ prev_d=0;
153
+ timer.textContent=format_time(current_d);
154
+ });
155
+ math.addEventListener('click',()=>{
156
+ const m=parseInt(mintus.options[mintus.selectedIndex].textContent);
157
+ sum_account.textContent=format_time(m*60*1000-current_d);
158
+ });
159
+ });
160
+ </script>
161
+ <div id="timer">00:00.000</div>
162
+ <button id="start">Start</button>
163
+ <button id="stop">Stop</button>
164
+ <button id="reset">Reset</button>
165
+ <select name="mintus" id ="mintus">
166
+ <option value="time_1">30</option>
167
+ <option value="time_2">60</option>
168
+ <option value="time_3">90</option>
169
+ </select>
170
+ <div>
171
+ <button id="sum">計算</button>
172
+ <div id="sum_account" ></div>
173
+ </div>
107
174
  ```

2

chousei

2020/09/26 10:32

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  <script>
4
4
 
5
5
  'use strict';
6
- var d;
6
+ var d=new Date(0);
7
7
  window.addEventListener('DOMContentLoaded', ()=>{
8
8
  const timer = document.getElementById('timer');
9
9
  const start = document.getElementById('start');
@@ -18,7 +18,7 @@
18
18
  let elapsedTime = 0;
19
19
 
20
20
  function format_time(d){
21
- const m = String(d.getMinutes()).padStart(2, '0');
21
+ const m = String(d.getMinutes()+(d.getHours()-9)*60).padStart(2, '0');
22
22
  const s = String(d.getSeconds()).padStart(2, '0');
23
23
  const ms = String(d.getMilliseconds()).padStart(3, '0');
24
24
  return `${m}:${s}.${ms}`;

1

chosei

2020/09/26 09:44

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -53,8 +53,7 @@
53
53
 
54
54
  function calculateRemaining(timeTxt) {
55
55
  const m = parseInt(mintus.options[mintus.selectedIndex].textContent);
56
- console.log(mintus.value);
57
- const result1 = d;
56
+ const result1 = new Date(d.getTime());
58
57
  result1.setMinutes(m-result1.getMinutes());
59
58
  result1.setSeconds(-result1.getSeconds());
60
59
  result1.setMilliseconds(-result1.getMilliseconds());