Stop Watch
// STOPWATCH ACTIVITY (SOLUTION)
// =============================
// This code will run as soon as the page loads
window.onload = function() {
$("#lap").on("click", stopwatch.recordLap);
$("#stop").on("click", stopwatch.stop);
$("#reset").on("click", stopwatch.reset);
$("#start").on("click", stopwatch.start);
};
// Variable that will hold our setInterval that runs the stopwatch
var intervalId;
//prevents the clock from being sped up unnecessarily
var clockRunning = false;
// Our stopwatch object
var stopwatch = {
time: 0,
lap: 1,
reset: function() {
stopwatch.time = 0;
stopwatch.lap = 1;
// DONE: Change the "display" div to "00:00."
$("#display").html("00:00");
// DONE: Empty the "laps" div.
$("#laps").html("");
},
start: function() {
// DONE: Use setInterval to start the count here and set the clock to running.
if (!clockRunning) {
intervalId = setInterval(stopwatch.count, 1000);
clockRunning = true;
}
},
stop: function() {
// DONE: Use clearInterval to stop the count here and set the clock to not be running.
clearInterval(intervalId);
clockRunning = false;
},
recordLap: function() {
// DONE: Get the current time, pass that into the stopwatch.timeConverter function,
// and save the result in a variable.
var converted = stopwatch.timeConverter(stopwatch.time);
// DONE: Add the current lap and time to the "laps" div.
$("#laps").append("<p>Lap " + stopwatch.lap + " : " + converted + "</p>");
// DONE: Increment lap by 1. Remember, we can't use "this" here.
stopwatch.lap++;
},
count: function() {
// DONE: increment time by 1, remember we cant use "this" here.
stopwatch.time++;
// DONE: Get the current time, pass that into the stopwatch.timeConverter function,
// and save the result in a variable.
var converted = stopwatch.timeConverter(stopwatch.time);
console.log(converted);
// DONE: Use the variable we just created to show the converted time in the "display" div.
$("#display").html(converted);
},
timeConverter: function(t) {
var minutes = Math.floor(t / 60);
var seconds = t - (minutes * 60);
if (seconds < 10) {
seconds = "0" + seconds;
}
if (minutes === 0) {
minutes = "00";
}
else if (minutes < 10) {
minutes = "0" + minutes;
}
return minutes + ":" + seconds;
}
};
// Solution if you choose not to put it in an object
// var time = 0;
// var lap = 1;
// function reset() {
// time = 0;
// lap = 1;
// $("#display").html("00:00");
// $("#laps").html("");
// }
// function start() {
// intervalId = setInterval(count, 1000);
// }
// function stop() {
// console.log("stopping");
// clearInterval(intervalId);
// }
// function recordLap() {
// var converted = timeConverter(time);
// $("#laps").append("<p>Lap " + lap + " : " + converted + "</p>");
// lap++;
// }
// function count() {
// time++;
// var converted = timeConverter(time);
// $("#display").html(converted);
// }
// function timeConverter(t) {
// var minutes = Math.floor(t / 60);
// var seconds = t - (minutes * 60);
// if (seconds < 10) {
// seconds = "0" + seconds;
// }
// if (minutes === 0) {
// minutes = "00";
// }
// else if (minutes < 10) {
// minutes = "0" + minutes;
// }
// return minutes + ":" + seconds;
// }
<!-- Students: Our work lies in the js file. -->
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Stopwatch</title>
<!-- Our CSS style sheet -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="wrapper">
<div id="display">00:00</div>
<!-- Div containing our stopwatch controls -->
<div id="buttons">
<button id="start">Start</button>
<button id="stop">Stop</button>
<button id="reset">Reset</button>
<button id="lap">Lap</button>
</div>
<div id="laps"></div>
</div>
<!-- jQuery -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- Script -->
<script type="text/javascript" src="stopwatchSolution.js"></script>
</body>
</html>
/* Students: Our work lies in the js file. */
body { /* Visual */
background: black;
}
#display {
font-family: monospace;
font-size: 120px;
color: green;
/* Typography */
text-align: center;
/* Visual */
background: black;
}
#wrapper {
/* Box-model */
width: 500px;
/* Positioning */
margin: 50px auto 0;
}
#buttons { /* Typography */
text-align: center;
}
button {
width: 100px;
/* Box-model */
height: 50px;
}
#laps {
width: 100%;
height: 200px;
/* Positioning */
margin-top: 20px;
/* Box-model */
overflow: auto;
/* Typography */
text-align: center;
/* Visual */
background: white;
}