2021-03-31 21:56:49 -04:00

49 lines
1.4 KiB
JavaScript

"use strict";
const $ = selector => document.querySelector(selector);
const getNumericErrorMsg = lbl => `${lbl} must be a valid number.`;
const getRangeErrorMsg = lbl => `${lbl} must be greater than zero.`;
const focusAndSelect = selector => {
const elem = $(selector);
elem.focus();
elem.select();
};
const processEntries = () => {
const miles = parseFloat($("#miles").value);
const gallons = parseFloat($("#gallons").value);
if (isNaN(miles)) {
alert(getNumericErrorMsg("Miles driven"));
focusAndSelect("#miles");
} else if (miles <= 0) {
alert(getRangeErrorMsg("Miles driven"));
focusAndSelect("#miles");
}
else if (isNaN(gallons)) {
alert(getNumericErrorMsg("Gallons of gas used"));
focusAndSelect("#gallons");
} else if (gallons <= 0) {
alert(getRangeErrorMsg("Gallons of gas used"));
focusAndSelect("#gallons");
}
else {
$("#mpg").value = (miles / gallons).toFixed(2);
}
};
const clearEntries = () => {
$("#miles").value = "";
$("#gallons").value = "";
$("#mpg").value = "";
$("#miles").focus();
}
document.addEventListener("DOMContentLoaded", () => {
$("#calculate").addEventListener("click", processEntries);
$("#clear").addEventListener("click", clearEntries);
$("#miles").addEventListener("dblclick", clearEntries);
$("#miles").focus();
});