47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
const getElement = selector => document.querySelector(selector);
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
|
|
getElement("#countdown").addEventListener("click", () => {
|
|
const eventName = getElement("#event").value;
|
|
const eventDateString = getElement("#date").value;
|
|
const messageLbl = getElement("#message");
|
|
|
|
// make sure user entered event and date
|
|
if (eventName == "" || eventDateString == "") {
|
|
messageLbl.textContent = "Please enter both a name and a date.";
|
|
return;
|
|
}
|
|
|
|
// convert event date string to Date object and check for validity
|
|
const eventDate = new Date(eventDateString);
|
|
if (eventDate.toString() == "Invalid Date") {
|
|
messageLbl.textContent = "Please enter a valid date.";
|
|
return;
|
|
}
|
|
|
|
// calculate days
|
|
const today = new Date();
|
|
const msFromToday = eventDate.getTime() - today.getTime();
|
|
const msForOneDay = 24 * 60 * 60 * 1000; // hrs * mins * secs * milliseconds
|
|
const daysToDate = Math.ceil( msFromToday / msForOneDay );
|
|
|
|
// create and display message
|
|
let msg = "";
|
|
const date = eventDate.toDateString();
|
|
if (daysToDate == 0) {
|
|
msg = `Hooray! Today is ${eventName}! (${date})`;
|
|
} else if (daysToDate > 0) {
|
|
msg = `${daysToDate} day(s) until ${eventName}! (${date})`;
|
|
} else if (daysToDate < 0) {
|
|
msg = `${eventName} happened ${Math.abs(daysToDate)}
|
|
day(s) ago. (${date})`;
|
|
}
|
|
messageLbl.textContent = msg;
|
|
});
|
|
|
|
// set focus on first text box
|
|
getElement("#event").focus();
|
|
}); |