Your Engagement Rate
--%
Based on -- engagements
from -- followers
Higher rates indicate strong audience connection!
`;
// Create a style element and append CSS
const styleElement = document.createElement('style');
styleElement.textContent = css;
document.head.appendChild(styleElement);
// Append HTML content to the body
document.body.innerHTML = htmlContent;
// Now that elements exist, attach event listeners and define logic
function calculateEngagement() {
const followersInput = document.getElementById('followers');
const likesInput = document.getElementById('likes');
const commentsInput = document.getElementById('comments');
const sharesInput = document.getElementById('shares');
const resultDisplaySection = document.getElementById('resultDisplaySection');
const engagementRateBig = document.getElementById('engagementRateBig');
const totalEngagementsVal = document.getElementById('totalEngagementsVal');
const totalFollowersVal = document.getElementById('totalFollowersVal');
const errorSection = document.getElementById('errorSection');
const errorMessage = document.getElementById('errorMessage');
resultDisplaySection.classList.remove('show');
errorSection.classList.remove('show');
const followers = parseInt(followersInput.value);
const likes = parseInt(likesInput.value);
const comments = parseInt(commentsInput.value);
const shares = parseInt(sharesInput.value);
if (isNaN(followers) || isNaN(likes) || isNaN(comments) || isNaN(shares)) {
errorMessage.textContent = 'Please fill in all fields with valid numbers.';
errorSection.classList.add('show');
engagementRateBig.textContent = '--%';
totalEngagementsVal.textContent = '--';
totalFollowersVal.textContent = '--';
return;
}
if (followers <= 0) {
errorMessage.textContent = 'Total Followers must be greater than 0.';
errorSection.classList.add('show');
engagementRateBig.textContent = '--%';
totalEngagementsVal.textContent = '--';
totalFollowersVal.textContent = '--';
return;
}
if (likes < 0 || comments < 0 || shares < 0) {
errorMessage.textContent = 'Likes, Comments, and Shares cannot be negative.';
errorSection.classList.add('show');
engagementRateBig.textContent = '--%';
totalEngagementsVal.textContent = '--';
totalFollowersVal.textContent = '--';
return;
}
const totalEngagement = likes + comments + shares;
let engagementRate = (totalEngagement / followers) * 100;
engagementRateBig.textContent = `${engagementRate.toFixed(2)}%`;
totalEngagementsVal.textContent = totalEngagement;
totalFollowersVal.textContent = followers;
resultDisplaySection.classList.add('show');
}
// Attach event listener after the button is added to the DOM
document.getElementById('calculateBtn').addEventListener('click', calculateEngagement);
// Auto-calculate on initial load
calculateEngagement();
})(); // Immediately Invoked Function Expression (IIFE) to encapsulate