The Code for FizzBuzz


                        // get the values user entered
                        // controller
                        function getValues() {
                            let fizzValue = document.getElementById("fizzValue").value;
                            let buzzValue = document.getElementById("buzzValue").value;

                            // convert to int
                            fizzValue = parseInt(fizzValue);
                            buzzValue = parseInt(buzzValue);

                            // valudate is integers
                            if (Number.isInteger(fizzValue) && Number.isInteger(buzzValue)) {
                                // call genrateNumbers
                                let fizzBuzz = generateFizzBuzz(fizzValue, buzzValue);

                                // call displayNumbers
                                displayFizzBuzz(fizzBuzz);
                            } 
                            else {
                                alert("You must enter integers");
                            }
                        }

                        // calculate fizz, buzz and fizzbuzz
                        // logic
                        function generateFizzBuzz(fv, bv) {
                            let fizzBuzz = [];

                            // loop to find each fizz, buzz and fizzbuzz
                            for (let i = 1; i <= 100; i++)
                            {
                                let item = "";

                                if (i % (fv * bv) == 0) {
                                    item = "FizzBuzz";
                                }
                                else if (i % bv == 0) {
                                    item = "Buzz";
                                }
                                else if (i % fv == 0) {
                                    item = "Fizz";
                                }
                                else {
                                    item = i;
                                }

                                // add to array
                                fizzBuzz.push(item);
                            }

                            return fizzBuzz;
                        }

                        // display fizzbuzz results
                        // view function
                        function displayFizzBuzz(fizzbuzz) {
                            // get area to place text
                            let tableBody = document.getElementById("results");

                            // get the html template to use
                            let templateRow = document.getElementById("fbTemplate");


                            // clear table
                            tableBody.innerHTML = "";

                            // loop array to create output from array
                            for (let i = 0; i < fizzbuzz.length; i += 5)
                            {
                                let tableRow = document.importNode(templateRow.content, true);

                                // grab the td put in an array
                                let rowCols = tableRow.querySelectorAll("td");
                                rowCols[0].textContent = fizzbuzz[i];
                                rowCols[1].textContent = fizzbuzz[i+1];
                                rowCols[2].textContent = fizzbuzz[i+2];
                                rowCols[3].textContent = fizzbuzz[i+3];
                                rowCols[4].textContent = fizzbuzz[i+4];

                                tableBody.appendChild(tableRow);
                            }
                        }

                    
                    

The Code is structured in three functions.

getValues

getValues function gets the values the user enter for Fizz and Buzz.

This also function as the controller for the application.

generateFizzBuzz

generateFizzBuzz function takes in the two numbers as parameters and creates an empty array at the begining.

Next we enter a for loop from 1 to 100. We use the i variable to determine if the number is a Fizz (1 % Fizz == 0) or a Buzz (i % Buzz == 0) or a FizzBuzz (i % (Fizz * Buzz) == 0) and finally if i does not match any conditions the just pass the value of i inot the array.

This returns an array with all the numbers from 1 to 100 with Fizz, Buzz and FizBuzz replacing the values as calculated.

displayFizzBuzz

displayFizzBuzz function will display the data in a 5 column table format.

First we get the area we are going to place the data by id ('results'). Next we get the html template object we are going to use by id ('fbTemplate').

Next we clear the display area of any previous results.

Then we create a for loop that lops over the length of the array passed in. We grab the table row template as an object. We then use css selector to get all the 'td' tags and put them in a variable.

We add each array item to a td tag by adding to a number to i as needed for each column (+1, +2, ...)

Once all the data has been add for that row, we append the table row data to the display area until the array is compelted.