The Code

                        
                            let $ = function(id){
                                return document.getElementById(id);
                            }

                            let usd = function(num){
                                return num.toLocaleString('en-US', {
                                    style: 'currency',
                                    currency: 'USD',
                                });
                            }
                            
                            //get values on btnCalculate press / controller
                            function getValues(){
                                //reset cols
                                $('totalsContainer').classList.remove("invisible", "d-none");
                                $('sharkImg').classList.add("invisible", "d-none");
                                $('resultsTable').classList.remove("invisible", "d-none");
                            
                                //collect & parse data
                                let loanAmount = parseFloat($('loanAmount').value);
                                let payments = parseFloat($('payments').value);
                                //allow for float later
                                let rate = parseFloat($('rate').value);
                            
                                //pass data to calculate function
                                let results = calculateLoan(loanAmount, payments, rate);
                            
                                //pass in calculations display data in table
                                displayData(results);
                            }
                            
                            //calculate amounts / logic
                            function calculateLoan(loanAmount, payments, rate){
                            
                                //object for months
                                let resultsObject = {};
                            
                                //create variables
                                let totalInterest = 0;
                                let balance = loanAmount;
                                let interestPayment = 0
                                let principalPayment;
                            
                                //monthly calculations
                                let monthlyPayment = parseFloat((loanAmount * (rate/1200)) / 
                                (1-(1+(rate/1200))**(-Math.abs(payments))));
                            
                                //string to store in html
                                let htmlString = ""
                                
                                //loop through number of payments do calculations
                                for (let i = 0; i <= payments; i++) {
                                    let month = i;
                            
                                    interestPayment = parseFloat(balance*(rate/1200));
                                    principalPayment = parseFloat(monthlyPayment - (balance * (rate/1200)));
                                    totalInterest = parseFloat((totalInterest + interestPayment));
                                    totalInterest = parseFloat(totalInterest);
                                    balance -= principalPayment;
                                    balance = Math.abs(parseFloat(balance));
                            
                                    //concatinate on to htmlString the results of the calculations
                                    htmlString += `<tr><td>${month+1}</td><td>${monthlyPayment.toFixed(2)}
                                        <td><td>${principalPayment.toFixed(2)}</td><td>${interestPayment.
                                        toFixed(2)}</td><td>${totalInterest.toFixed(2)}</td><td>$
                                        {balance.toFixed(2)}</td></tr>`
                                }
                                
                                let totalCost = loanAmount + totalInterest;
                            
                                // display calculated variables to proper positions while inside function
                                // use the usd function to convert to USD format
                                resultsObject.monthlyPayment = usd(monthlyPayment);
                                resultsObject.totalPrincipal = usd(totalPrincipal);
                                resultsObject.totalInterest = usd(totalInterest);
                                resultsObject.totalCost = usd(totalCost);
                                                        
                                resultsObject.htmlString = htmlString;
                            
                                //return results object
                                return resultsObject;
                            }
                            
                            //display the data in a table / view
                            function displayData(resultsObject){
                                $("monthlyPayment").innerHTML =  resultsObject.monthlyPayment;
                                $("totalPrincipal").innerHTML =  resultsObject.totalPrincipal;
                                $("totalInterest").innerHTML =  resultsObject.totalInterest;
                                $("totalCost").innerHTML =  resultsObject.totalCost;
                                //creates table
                                $("results").innerHTML = resultsObject.htmlString;
                            }
                            
                            //reset + clear app when btnReset pressed
                            function resetPage(){
                                $('totalsContainer').classList.add("invisible", "d-none");
                                $('sharkImg').classList.remove("invisible", "d-none");
                                $('resultsTable').classList.add("invisible", "d-none");
                            
                                //resets inputs
                                $('loanAmount').value = "15000";
                                $('payments').value = "60";
                                $('rate').value = "3";
                            }
                        
                    

Coming Soon

$

Code explanations