The Code

// Get User Input from Page
// Controller Function/ Entry Point

function getValues()
{
    //Get Values
    let startValue = document.getElementById('startValue').value
    let endValue = document.getElementById('endValue').value


    //Parse inputs as numbers
    startValue = parseInt(startValue);
    endValue = parseInt(endValue);


        //  Verify our inputs are numbers
        if (Number.isInteger(startValue) && Number.isInteger(endValue))
        {
            // Generate the Numbahs
            let numbersArray = generateNumbers(startValue, endValue);

            // Display the numbahs
            displayNumbers(numbersArray);

        }
        else
        {
            // If not, call them a goof.
            Swal.fire
            ({
                    icon: 'error',
                    title: 'Whoops!',
                    text: "Dubloons are numbers only, you goof!"
            })
        }
}


// Generate numbers
// Logic functions
function generateNumbers(start, end)
{
    let numbers = [];

        for (let i = start; i <= end; i++)
        {
            numbers.push(i);
        }

    return numbers;
}


//Display them on the page
//  View Function - Make it show up.
function displayNumbers(numbersArray)
{
    let tableBody = document.getElementById('dubloonCount');
    let tableHTML = "";

        for (let i = 0; i < numbersArray.length; i++)
        {
            let value = numbersArray[i];
            let className = '';
            value % 2 == 0 ? className = 'even' : className = 'odd';

                if (i % 5 == 0)
                {
                    tableHTML += '<tr>';
                }


            tableHTML += `<td class="${className}">${value}</td>`

                if ((i + 1) % 5 == 0)
                {
                    tableHTML += '</tr>';
                }
        }

    tableBody.innerHTML = tableHTML;
}
JavaScript

The code is structured in three functions. Called functions will be detailed in their own sections. Click a headline() to scroll to that section of the code. And click the function name within the code to scroll to that write up section.


getValues()


This function grabs the input values from our startValue and endValue elements. It then parses those strings into integers. Following that, we verify the inputs are numbers as a quick check. If they are, we call generateNumbers() and then displayNumbers(). If they are not numbers we use a sweet alert to call them a goof, as pirates do.


generateNumbers()


This function generates an array starting with the startValue number and counting up until it reaches the endValue number. It then returns numbers.


displayNumbers()


This function is used to display the numbers on the webpage for the user. First it is passed the argument of numbersarray. It grabs the id of the table where we want to display them. Then a blank string is assigned to tableHTML. Next, our for loop runs through a number of ternary and if statements to build the html.

The ternary statement value % 2 == 0 ? className = 'even' : className = 'odd' assigns the value of 'even' if the value is divisible by 2 with 0 remainder, or 'odd' if it has a remainder. Then we get into the if statements. If the value of i divided by 5 has a remainder of 0 then it attaches a <tr> to tableHTML. Then tableHTML adds what its current value is as a string template literal. Following that we look into the future a bit. If the value of i + 1 is divisble by 5 it adds a </tr> to the tableHTML.

Finally, it places the created element into the HTML and it is displayed for the user on the page.