-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
88 lines (77 loc) · 2.6 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
let isRunning = false;
let startTime;
let lapCounter = 1;
function startPause() {
const startPauseButton = document.getElementById("startPause");
const lapResetButton = document.getElementById("lapReset");
if (!isRunning) {
// Start the stopwatch
isRunning = true;
startPauseButton.textContent = "Pause";
lapResetButton.textContent = "Lap";
startTime = new Date().getTime();
updateDisplay();
updateButtons();
} else {
// Pause the stopwatch
isRunning = false;
startPauseButton.textContent = "Resume";
lapResetButton.textContent = "Reset";
updateButtons();
}
}
function lapReset() {
const startPauseButton = document.getElementById("startPause");
const lapResetButton = document.getElementById("lapReset");
const display = document.getElementById("display");
const lapsList = document.getElementById("laps");
if (!isRunning) {
// Reset the stopwatch
isRunning = false;
startPauseButton.textContent = "Start";
lapResetButton.textContent = "Lap";
display.textContent = "00:00:00";
lapCounter = 1;
lapsList.innerHTML = "";
updateButtons();
} else {
// Record lap time
const lapTime = calculateLapTime();
const lapItem = document.createElement("li");
lapItem.textContent = `Lap ${lapCounter}: ${lapTime}`;
lapsList.appendChild(lapItem);
lapCounter++;
}
}
function calculateLapTime() {
const currentTime = new Date().getTime();
const elapsedTime = currentTime - startTime;
const formattedTime = formatTime(elapsedTime);
startTime = currentTime; // Update start time for the next lap
return formattedTime;
}
function updateDisplay() {
const display = document.getElementById("display");
const currentTime = new Date().getTime();
const elapsedTime = currentTime - startTime;
const formattedTime = formatTime(elapsedTime);
display.textContent = formattedTime;
if (isRunning) {
requestAnimationFrame(updateDisplay);
}
}
function formatTime(time) {
const hours = Math.floor(time / 3600000);
const minutes = Math.floor((time % 3600000) / 60000);
const seconds = Math.floor((time % 60000) / 1000);
return (
padWithZero(hours) + ":" + padWithZero(minutes) + ":" + padWithZero(seconds)
);
}
function padWithZero(number) {
return number < 10 ? "0" + number : number;
}
function updateButtons() {
const lapResetButton = document.getElementById("lapReset");
lapResetButton.disabled = !isRunning && lapCounter === 1;
}