-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
89 lines (74 loc) · 2.39 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
let startTime = 0;
let elapsedTime = 0;
let intervalId;
let isRunning = false;
let lapCounter = 1;
const display = document.querySelector('.timer-display');
const startButton = document.getElementById('start');
const pauseButton = document.getElementById('pause');
const resetButton = document.getElementById('reset');
const lapButton = document.getElementById('lap');
const lapList = document.getElementById('lapTimes');
//format time
function formatTime(ms) {
const milliseconds = Math.floor((ms % 1000));
const seconds = Math.floor((ms / 1000) % 60);
const minutes = Math.floor((ms / (1000 * 60)) % 60);
const hours = Math.floor(ms / (1000 * 60 * 60));
return (
(hours < 10 ? '0' : '') + hours + ' : ' +
(minutes < 10 ? '0' : '') + minutes + ' : ' +
(seconds < 10 ? '0' : '') + seconds + ' . ' +
(milliseconds < 100 ? '0' : '') + (milliseconds < 10 ? '0' : '') + milliseconds
);
}
// Start button
startButton.addEventListener('click', function () {
if (isRunning) {
return;
}
isRunning = true;
startTime = Date.now() - elapsedTime;
intervalId = setInterval(function () {
elapsedTime = Date.now() - startTime;
display.textContent = formatTime(elapsedTime);
}, 10);
startButton.disabled = true;
pauseButton.disabled = false;
lapButton.disabled = false;
});
// Pause button
pauseButton.addEventListener('click', function () {
if (!isRunning) {
return;
}
isRunning = false;
clearInterval(intervalId);
pauseButton.disabled = true;
startButton.disabled = false;
});
// Reset button
resetButton.addEventListener('click', function () {
clearInterval(intervalId);
isRunning = false;
elapsedTime = 0;
display.textContent = '00 : 00 : 00 . 000';
lapList.innerHTML = '';
lapCounter = 1;
startButton.disabled = false;
pauseButton.disabled = true;
lapButton.disabled = true;
});
// Lap button
lapButton.addEventListener('click', function () {
if (!isRunning) {
return;
}
const lapTime = formatTime(elapsedTime);
const lapItem = document.createElement('li');
lapItem.textContent = `Lap ${lapCounter}: ${lapTime}`;
lapList.appendChild(lapItem);
lapCounter++;
});
pauseButton.disabled = true;
lapButton.disabled = true;