Spaces:
Sleeping
Sleeping
// Listen for submit | |
document.getElementById('loan-form').addEventListener('submit', calculateResults); | |
// Calculate Results | |
function calculateResults(e){ | |
// console.log("calculating"); | |
// Declare UI Variables | |
const amount = document.getElementById('amount'); | |
const interest = document.getElementById('interest'); | |
const years = document.getElementById('years'); | |
const monthlyPayment = document.getElementById('monthly-payment'); | |
const totalPayment = document.getElementById('total-payment'); | |
const totalInterest = document.getElementById('total-interest'); | |
// Turn amount into decimal and store it into variable | |
const principal = parseFloat(amount.value); | |
const calculatedInterest = parseFloat(interest.value) /100 / 12; | |
const calculatedPayment = parseFloat(years.value) * 12; | |
// Compute monthly payments | |
const x = Math.pow(1 + calculatedInterest, calculatedPayment); | |
const monthly = (principal * x * calculatedInterest)/(x-1); | |
// Check if value is finite | |
if(isFinite(monthly)){ | |
monthlyPayment.value = monthly.toFixed(2); | |
totalPayment.value = (monthly * calculatedPayment).toFixed(2); | |
totalInterest.value = ((monthly * calculatedPayment) - principal).toFixed(2); | |
} else{ | |
showError("Please check your numbers") | |
} | |
e.preventDefault(); | |
} | |
// Function to show error | |
function showError(error){ | |
// create div | |
const errorDiv = document.createElement('div'); | |
// Get card and heading in order to add new div to DOM. Parent element | |
const card = document.querySelector('.card'); | |
const heading = document.querySelector('.heading'); | |
// Give div a class name | |
errorDiv.className = 'alert alert-danger'; | |
// Create text and append div | |
errorDiv.appendChild(document.createTextNode(error)); | |
// Insert error above heading. Insert above will take in the parent element which is the card in this case and for the parameters | |
// It will take in the element you want to put in and the element you want to put it before, in this case errorDiv and the heading | |
card.insertBefore(errorDiv, heading); | |
// Clear error after 3 seconds | |
setTimeout(clearError, 3000); | |
} | |
// Create clear error | |
function clearError(){ | |
document.querySelector('.alert').remove(); | |
} |