-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
113 lines (84 loc) · 2.51 KB
/
script.js
File metadata and controls
113 lines (84 loc) · 2.51 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
const start = document.getElementById('start');
const reset = document.getElementById('reset');
const pause = document.getElementById('pause');
const h = document.getElementById("hour");
const m = document.getElementById("minute");
const s = document.getElementById("sec");
const lap = document.getElementById('lap');
const lapsList = document.getElementById('laps-list');
let lapCount = 0;
let startTimer = null;
let isPaused = false;
start.addEventListener('click', function() {
if (startTimer !== null || isPaused) return;
validateInputs();
startTimer = setInterval(timer, 1000);
});
reset.addEventListener('click', function() {
h.value = "00";
m.value = "00";
s.value = "00";
stopInterval();
isPaused = false;
pause.innerHTML = "Pause";
lapsList.innerHTML = "";
lapCount = 0;
});
function formatTime(value) {
return (value < 10 ? "0" + value : value);
}
function validateInputs() {
let hours = Number(h.value);
let minutes = Number(m.value);
let seconds = Number(s.value);
if (seconds >= 60) {
minutes += Math.floor(seconds / 60);
seconds = seconds % 60;
}
if (minutes >= 60) {
hours += Math.floor(minutes / 60);
minutes = minutes % 60;
}
h.value = hours;
m.value = minutes;
s.value = seconds;
}
function timer() {
if (h.value == 0 && m.value == 0 && s.value == 0) {
stopInterval();
alert("Time's up!");
} else if (s.value != 0) {
s.value--;
} else if (m.value != 0 && s.value == 0) {
s.value = 59;
m.value--;
} else if (h.value != 0 && m.value == 0) {
m.value = 59;
h.value--;
}
h.value = formatTime(Number(h.value));
m.value = formatTime(Number(m.value));
s.value = formatTime(Number(s.value));
}
function stopInterval() {
clearInterval(startTimer);
startTimer = null;
}
pause.addEventListener('click', function() {
if (isPaused) {
startTimer = setInterval(timer, 1000);
pause.innerHTML = "Pause";
} else {
clearInterval(startTimer);
startTimer = null;
pause.innerHTML = "Resume";
}
isPaused = !isPaused;
});
lap.addEventListener('click', function() {
if (startTimer === null && !isPaused) return;
lapCount++;
const currentLap = document.createElement('li');
currentLap.textContent = `Lap ${lapCount}: ${formatTime(Number(h.value))}:${formatTime(Number(m.value))}:${formatTime(Number(s.value))}`;
lapsList.appendChild(currentLap);
});