 <p>Because your you calculate topping cost all all toppings and apply accross all pizza:</p> <pre><code>$(document).on("change","input[type='checkbox']", function() { var checked = $(":checkbox:checked").length; // this value is used for all pizzas, which is incorrect var toppingCost = (.99 * checked); var formID = $(this).closest('div').attr("id"); for(var i = 0; i &lt; pizzaArray.length; i++) { if (pizzaArray[i].pizzaNumber == formID) { pizzaArray[i].toppingCost = toppingCost; calculateCost(); } } }); </code></pre> <p>You should distinguish which topping belongs to which pizza.</p>