使用 JavaScript 在 <div> 中打印多个 <p> 标签

Printing Multiple <p> Tags within a <div> Using JavaScript

我正在尝试使用 JavaScript 创建一些 html <p><div> 标签,其中包含一些信息。我遇到的问题是我的 totalAmountPrintOut 函数只是在 #printDivOut<div> 中 returning 1 <p> 标签,当我想要它时 return 8。如果有人能帮我解决这个问题问题,我将不胜感激。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="input1-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="Jerry Reimer" content="Cake Baby Bakery Recipe Calculator">
    <title>Cake Baby Bakery Recipe Calculator</title>
    <script src="/common/ajaxCheat.js"></script>
    <style>
        .starter-template {
            padding: 40pinput1 15pinput1;
            teinput1t-align: center;
        }
    </style>
    <script src="/common/ajaxCheat.js"></script>
</head>

<body>  
    <div id="wholePage" >
        <img src="img1.png" alt="Cake Baby">
        <div id="title">Cake Baby</div>


        <div id="cakeHook" >
            <div id="displayBlock1">
                <div id="recipe1Div">
                    Chocolate Cake (per cake): <br> 1.75 cups of Flour, 2 cup of Sugar, 2 Eggs, 1.5 tsp Baking Powder and 1.75 tsp of Baking Soda and 0.75 cups of Chocolate Powder
                </div>

                <form >
                        <input type="number" name="recipe1" min="0" mainput1="10000" value="0" id="form1">
                </form>
            </div>
            <div id="displayBlock2">
                <div id="recipe2Div">
                    Cookies (per two dozen): <br> 0.5 cup butter, 1.5 cups of flour, 0.5 tsp Baking Powder, 1 Egg, 1 Cup of Chocolate Chips, 3.0 cups sugar
                </div>
                <form >
                        <input type="number" name="recipe2" min="0" mainput1="10000" value="0" id="form2">
                </form> 
            </div>

            <button id="calculateButton">
                Calculate
            </button>

            <div id="Total">
                Total
                <form id="output">
                    <output id="totalCalculation">

                    </output>
                </form>
            </div>

        </div>


    </div>

    <div id="printOutDiv">

    </div>

    <script>
        //costPrintOut object constructor
        var costPrintOut = function(bodyText) {
            this.body = bodyText;
            this.printOut = function() {
                var printOutDiv = document.getElementById("printOutDiv");
                var costPrintOutDiv = document.createElement("div");
                costPrintOutDiv.innerHTML = "<p>" + "The total cost of the recipe's is: $" + this.body + "</p>";
                printOutDiv.appendChild(costPrintOutDiv);
            };
        };

        //totalAmountPrintOut object constructor
        var totalAmountPrintOut = function(bodyText1,bodyText2,bodyText3,bodyText4,bodyText5,bodyText6,bodyText7,bodyText8) {
            this.body1 = bodyText1;
            this.body2 = bodyText2;
            this.body3 = bodyText3;
            this.body4 = bodyText4;
            this.body5 = bodyText5;
            this.body6 = bodyText6;
            this.body7 = bodyText7;
            this.body8 = bodyText8;
            this.printOutRecipe = function() {
                var printOutDiv = document.getElementById("printOutDiv");
                var amountPrintOutDiv = document.createElement("div");
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body1 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body2 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body3 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body4 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body5 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body6 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body7 + " cups." + "</p>";
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body8 + " cups." + "</p>";
                printOutDiv.appendChild(amountPrintOutDiv);
            };
        };
        //function that steps through and parses JSON text  
        //passed to ajax get code
        var callback = function(text){
            var parsedData = JSON.parse(text);
            console.log(parsedData);




            //retrieve input values
            var input1 = document.getElementById("form1").value;
            var input2 = document.getElementById("form2").value;

            //calculate total amount of ingredients  & total cost of each ingredient
            var totalAmountofFlourIngredientForCake = input1 * (parsedData[0].recipes[0].ingredients[0].Flour);
            var totalAmountofSugarIngredientForCake = input1 * (parsedData[0].recipes[0].ingredients[0].Sugar);
            var totalAmountofEggsIngredientForCake = input1 * (parsedData[0].recipes[0].ingredients[0].Eggs);
            var totalAmountofBakingPowderIngredientForCake = input1 * (parsedData[0].recipes[0].ingredients[0].BakingPowder);
            console.log(totalAmountofBakingPowderIngredientForCake);
            var totalAmountofBakingSodaIngredientForCake = input1 * (parsedData[0].recipes[0].ingredients[0].BakingSoda);
            var totalAmountofChocolatePowderIngredientForCake = input1 * (parsedData[0].recipes[0].ingredients[0].ChocolatePowder);

            var costOfflourIngredientTotalForCake = totalAmountofFlourIngredientForCake * (parsedData[0].products[0].cost);
            var costOfsugarIngredientTotalForCake = totalAmountofSugarIngredientForCake * (parsedData[0].products[1].cost);
            var costOfeggIngredientTotalForCake = totalAmountofEggsIngredientForCake * (parsedData[0].products[2].cost);
            var costOfbakingpowderIngredientTotalForCake = totalAmountofBakingPowderIngredientForCake  * (parsedData[0].products[3].cost);
            var costOfbakingSodaIngredientTotalForCake = totalAmountofBakingSodaIngredientForCake  * (parsedData[0].products[4].cost);
            var costOfchocPowderIngredientTotalForCake = totalAmountofChocolatePowderIngredientForCake  * (parsedData[0].products[5].cost);

            var totalAmountofFlourIngredientForCookies = input2 * (parsedData[0].recipes[1].ingredients[0].Flour);
            var totalAmountofSugarIngredientForCookies = input2 * (parsedData[0].recipes[1].ingredients[0].Sugar);
            var totalAmountofEggsIngredientForCookies = input2 * (parsedData[0].recipes[1].ingredients[0].Eggs);
            var totalAmountofBakingPowderIngredientForCookies = input2 * (parsedData[0].recipes[1].ingredients[0].BakingPowder);
            console.log(parsedData[0].recipes[1].ingredients[0].BakingPowder);
            console.log(totalAmountofBakingPowderIngredientForCookies);
            var totalAmountofButterIngredientForCookies = input2 * (parsedData[0].recipes[1].ingredients[0].Butter);
            var totalAmountofChocolateChipIngredientForCookies = input2 * (parsedData[0].recipes[1].ingredients[0].ChocolateChips);

            var costOfbutterIngredientTotalForCookies = totalAmountofButterIngredientForCookies * (parsedData[0].products[7].cost);
            var costOfflourIngredientTotalForCookies = totalAmountofFlourIngredientForCookies * (parsedData[0].products[0].cost);
            var costOfsugarIngredientTotalForCookies = totalAmountofSugarIngredientForCookies * (parsedData[0].products[1].cost);
            var costOfeggsIngredientTotalForCookies = totalAmountofEggsIngredientForCookies * (parsedData[0].products[2].cost);
            var costOfbakingPowderIngredientTotalForCookies = totalAmountofBakingPowderIngredientForCookies * (parsedData[0].products[3].cost);
            var costOfchocolateChipsIngredientTotalForCookies = totalAmountofChocolateChipIngredientForCookies * (parsedData[0].products[6].cost);

            //add amount of ingredients together from cookies and cake recipes
            var totalAmountofFlour = totalAmountofFlourIngredientForCookies + totalAmountofFlourIngredientForCake;
            var totalAmountofSugar = totalAmountofSugarIngredientForCake + totalAmountofSugarIngredientForCookies;
            var totalAmountofEggs = totalAmountofEggsIngredientForCake + totalAmountofEggsIngredientForCookies;
            var totalAmountofBakingPowder = totalAmountofBakingPowderIngredientForCake + totalAmountofBakingPowderIngredientForCookies;
            console.log(totalAmountofBakingPowder);
            var totalAmountofBakingSoda = totalAmountofBakingSodaIngredientForCake;
            var totalAmountofChocPowder = totalAmountofChocolatePowderIngredientForCake;
            var totalAmountofChocChips = totalAmountofChocolateChipIngredientForCookies;
            var totalAmountofButter = totalAmountofButterIngredientForCookies; 

            //add cost of ingredients together from cookies and cake recipes
            var totalCostofFlour = costOfflourIngredientTotalForCake + costOfflourIngredientTotalForCookies;
            var totalCostofSugar = costOfsugarIngredientTotalForCake + costOfsugarIngredientTotalForCookies;
            var totalCostofEggs = costOfeggIngredientTotalForCake + costOfeggsIngredientTotalForCookies;
            var totalCostofBakingPowder = costOfbakingpowderIngredientTotalForCake + costOfbakingPowderIngredientTotalForCookies;
            var totalCostofBakingSoda = costOfbakingSodaIngredientTotalForCake;
            var totalCostofChocPowder = costOfchocPowderIngredientTotalForCake;
            var totalCostofChocChips = costOfchocolateChipsIngredientTotalForCookies;
            var totalCostofButter = totalAmountofButterIngredientForCookies;
            console.log(totalCostofBakingPowder);

            var totalCost = totalCostofFlour + totalCostofSugar + totalCostofEggs + totalCostofBakingPowder + totalCostofBakingSoda + totalCostofChocPowder + totalCostofChocChips + totalCostofButter;
            console.log(totalCost);

            var displayTotalCost = new costPrintOut(totalCost);
            displayTotalCost.printOut();

            var displayTotalAmountofIngredients = new totalAmountPrintOut(totalAmountofFlour,totalAmountofSugar,totalAmountofEggs,totalAmountofBakingPowder,totalAmountofBakingSoda,totalAmountofChocPowder,totalAmountofChocChips,totalAmountofButter);
            displayTotalAmountofIngredients.printOutRecipe();
        };
        //onClick event that returns text
        document.getElementById("calculateButton").onclick = function() {
            //returning json data
            ajax.get("a1data.json", callback);
        };
    </script>   
</body>

    var totalAmountPrintOut = function(bodyText1,bodyText2,bodyText3,bodyText4,bodyText5,bodyText6,bodyText7,bodyText8) {
            this.body1 = bodyText1;
            this.body2 = bodyText2;
            this.body3 = bodyText3;
            this.body4 = bodyText4;
            this.body5 = bodyText5;
            this.body6 = bodyText6;
            this.body7 = bodyText7;
            this.body8 = bodyText8;
            this.printOutRecipe = function() {
                var printOutDiv = document.getElementById("printOutDiv");
                var amountPrintOutDiv = document.createElement("div");
                amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body1 + " cups." + "</p>";
                var amountPrintOutDiv1 = document.createElement("div");
                amountPrintOutDiv1.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body2 + " cups." + "</p>";
                var amountPrintOutDiv2 = document.createElement("div");
                amountPrintOutDiv2.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body3 + " cups." + "</p>";
                var amountPrintOutDiv3 = document.createElement("div");
                amountPrintOutDiv3.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body4 + " cups." + "</p>";
                var amountPrintOutDiv4 = document.createElement("div");
                amountPrintOutDiv4.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body5 + " cups." + "</p>";
                var amountPrintOutDiv5 = document.createElement("div");
                amountPrintOutDiv5.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body6 + " cups." + "</p>";
                var amountPrintOutDiv6 = document.createElement("div");
                amountPrintOutDiv6.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body7 + " cups." + "</p>";
                var amountPrintOutDiv7 = document.createElement("div");
                amountPrintOutDiv7.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body8 + " cups." + "</p>";

                printOutDiv.appendChild(amountPrintOutDiv);
                printOutDiv.appendChild(amountPrintOutDiv1);
                printOutDiv.appendChild(amountPrintOutDiv2);
                printOutDiv.appendChild(amountPrintOutDiv3);
                printOutDiv.appendChild(amountPrintOutDiv4);
                printOutDiv.appendChild(amountPrintOutDiv5);
                printOutDiv.appendChild(amountPrintOutDiv6);
                printOutDiv.appendChild(amountPrintOutDiv7);
            };
        };

您在将 html 分配给 amountPrintOutDiv.innerHTML 时缺少“+”。

amountPrintOutDiv.innerHTML = "<p>" + "The total amount flour from the recipes is " + this.body1 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body2 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body3 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body4 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body5 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body6 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body7 + " cups." + "</p>";
amountPrintOutDiv.innerHTML += "<p>" + "The total amount flour from the recipes is " + this.body8 + " cups." + "</p>";

问题是您没有将文本附加到 innerHTML,您只是将它重新分配了 8 次。尝试这样的事情:

amountPrintOutDiv.innerHTML = "<p>text..." + this.body1 + "</p>" +
                              "<p>text..." + this.body2 + "</p>" +
                              "<p>text..." + this.body3 + "</p>" +
                              "<p>text..." + this.body4 + "</p>";

或者,如果您必须追加,您可以这样做:

amountPrintOutDiv.innerHTML = "<p>text..." + this.body1 + "</p>";
amountPrintOutDiv.innerHTML += "<p>text..." + this.body1 + "</p>";
amountPrintOutDiv.innerHTML += "<p>text..." + this.body2 + "</p>";
amountPrintOutDiv.innerHTML += "<p>text..." + this.body2 + "</p>";

此外,如果您发现自己编写了非常重复的代码,不妨考虑一下如何将其放入循环中。