function calculate() {
// Collect the data
let bal = Number(document.getElementById("loan").value);
let term = Number(document.getElementById("term").value);
let rate = Number(document.getElementById("rate").value);
// Run Calculations On Collected Data
let totMonPmt = (bal) * (rate / 1200) / (1 - Math.pow((1 + rate / 1200), -term));
let remBal = bal;
let intPmt = remBal * rate / 1200;
let prinPmt = totMonPmt - intPmt;
let totIntPmt = 0;
// Create table format
let template = `
Month |
Payment |
Principal |
Interest |
Total Interest |
Balance |
`;
// Loop through payments to calculate information for table (Order Matters!)
for (let i = 1; i <= term; i++) {
intPmt = remBal * rate / 1200;
prinPmt = totMonPmt - intPmt;
totIntPmt += intPmt;
remBal = remBal - prinPmt;
totPmt = bal + totIntPmt;
// Output results to table
template += `
${i} |
$${totMonPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')} |
$${prinPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')} |
$${intPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')} |
$${totIntPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')} |
$${Math.abs(remBal).toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')} |
`
};
// Output to HTML
document.getElementById("result").innerHTML = template;
document.getElementById("termMon").innerHTML = `${term} months`
document.getElementById("totBal").innerHTML = `$${bal.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')}`
document.getElementById("monPmt").innerHTML = `$${totMonPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')}`;
document.getElementById("intRate").innerHTML = `${rate}%`
document.getElementById("totPmt").innerHTML = `$${totPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')}`;
document.getElementById("totInt").innerHTML = `$${totIntPmt.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')}`;
};