5 Zone Heart Rate Calculator
function calculateHeartRateZones() {
var ageInput = document.getElementById("age");
var maxHeartRateInput = document.getElementById("maxHeartRate");
var resultsDiv = document.getElementById("heartRateResults");
var age = parseFloat(ageInput.value);
var maxHeartRate = parseFloat(maxHeartRateInput.value);
var calculatedMHR = 0;
if (isNaN(maxHeartRate) && !isNaN(age)) {
calculatedMHR = 220 – age;
maxHeartRate = calculatedMHR;
maxHeartRateInput.value = calculatedMHR; // Update input field with estimated MHR
} else if (isNaN(maxHeartRate) && isNaN(age)) {
resultsDiv.innerHTML = "Please enter your age or estimated maximum heart rate.";
return;
}
if (isNaN(maxHeartRate) || maxHeartRate <= 0) {
resultsDiv.innerHTML = "Please enter a valid maximum heart rate (greater than 0).";
return;
}
var zone1_lower = Math.round(maxHeartRate * 0.50);
var zone1_upper = Math.round(maxHeartRate * 0.60);
var zone2_lower = Math.round(maxHeartRate * 0.61);
var zone2_upper = Math.round(maxHeartRate * 0.70);
var zone3_lower = Math.round(maxHeartRate * 0.71);
var zone3_upper = Math.round(maxHeartRate * 0.80);
var zone4_lower = Math.round(maxHeartRate * 0.81);
var zone4_upper = Math.round(maxHeartRate * 0.90);
var zone5_lower = Math.round(maxHeartRate * 0.91);
var zone5_upper = Math.round(maxHeartRate * 1.00);
document.getElementById("zone1").innerHTML = "Zone 1 (Very Light): " + zone1_lower + " – " + zone1_upper + " bpm";
document.getElementById("zone2").innerHTML = "Zone 2 (Light): " + zone2_lower + " – " + zone2_upper + " bpm";
document.getElementById("zone3").innerHTML = "Zone 3 (Moderate): " + zone3_lower + " – " + zone3_upper + " bpm";
document.getElementById("zone4").innerHTML = "Zone 4 (Hard): " + zone4_lower + " – " + zone4_upper + " bpm";
document.getElementById("zone5").innerHTML = "Zone 5 (Maximum): " + zone5_lower + " – " + zone5_upper + " bpm";
}
.heart-rate-calculator-widget {
font-family: sans-serif;
border: 1px solid #ccc;
padding: 20px;
border-radius: 8px;
max-width: 600px;
margin: 20px auto;
background-color: #f9f9f9;
}
.heart-rate-calculator-widget h2 {
text-align: center;
color: #333;
margin-bottom: 20px;
}
.calculator-inputs {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
margin-bottom: 20px;
}
.form-group {
display: flex;
flex-direction: column;
}
.form-group label {
margin-bottom: 8px;
font-weight: bold;
color: #555;
}
.form-group input[type="number"] {
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1rem;
width: 100%;
box-sizing: border-box;
}
.form-group small {
font-size: 0.8em;
color: #777;
margin-top: 5px;
}
.heart-rate-calculator-widget button {
display: block;
width: 100%;
padding: 12px 20px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
font-size: 1.1rem;
cursor: pointer;
transition: background-color 0.3s ease;
margin-bottom: 20px;
}
.heart-rate-calculator-widget button:hover {
background-color: #45a049;
}
.calculator-results {
background-color: #fff;
border: 1px solid #ddd;
padding: 15px;
border-radius: 4px;
text-align: left;
}
.calculator-results h3 {
margin-top: 0;
color: #444;
border-bottom: 1px solid #eee;
padding-bottom: 10px;
margin-bottom: 15px;
}
.calculator-results div {
margin-bottom: 10px;
font-size: 1.05rem;
color: #333;
}
.calculator-explanation {
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid #eee;
font-size: 0.95rem;
line-height: 1.6;
color: #444;
}
.calculator-explanation h3,
.calculator-explanation h4 {
color: #333;
margin-top: 15px;
margin-bottom: 10px;
}
.calculator-explanation p {
margin-bottom: 10px;
}