计算所有项目总计到小计 Jquery
Calculate all item totals to subtotal Jquery
注意:很多人都有类似的问题,但我的代码设置略有不同,因此这些解决方案在这里不起作用。
我有一个小计变量,它应该添加每个项目的每个总计(价格 * 数量)和 return 合并总计。我得到小计返回为:8.99undefinedundefinedundefined。如果我现在添加一个新项目:8.9911.99undefinedundefined
这是我的代码:
// defining Order Items
// ea Item creates a new row with 3 td cells. Includes Item description and Price
var $burger = $("<tr><td class='addedBurger'>Royale w/ Cheese</td><td></td><td>.99</td> <td id='burgerCount'></td> </tr>");
var $pizza = $("<tr><td class='addedPizza'>Arugula Pizza</td><td></td><td>.99</td> <td id='pizzaCount'></td> </tr>");
var $pork = $("<tr><td class='addedPork'>Smoked Pork Ribs</td><td></td><td>.99</td> <td id='porkCount'></td> </tr>");
var $icecream = $("<tr><td class='addedIceCream'>Ice Cream Biscuit</td><td></td><td>.99</td> <td id='icecreamCount'></td> </tr>");
// Tbody(Order Items get prepended to here)
var $tbody = $('#placeOrderHere');
// BURGER
var $burgerTotal;
var $burgerCounter = 0;
var $burgerPrice = 8.99;
// Add to Order: Burger Button
$( "#place-order1" ).click(function() {
// adds burger item table row
$burger.prependTo($("#placeOrderHere"));
// counts burgers
$burgerCounter ++;
// updates burger quanities in row td
$('#burgerCount').text($burgerCounter);
$burgerTotal = ($burgerCounter * $burgerPrice).toFixed(2);
$orderSubTotal = ($burgerTotal + $pizzaTotal + $porkTotal + $icecreamTotal);
$('#subtotal').text($orderSubTotal);
});
// Defining Subtotal
var $orderSubTotal;
//$orderSubtotal = $burgerTotal + $pizzaTotal + $porkTotal + $icecreamTotal;
// console.log($orderSubtotal);
让这个 post 更短。我只包含了四个项目中的一个 - 每个项目代码都是相同的。只是名称不同...所以 Pizza 有变量 $pizzaTotal、$pizzaCounter、$pizzaPrice 等,
这部分工作我似乎无法让小计工作正常。在将 tofixed 放在 $itemTotal 上之前,我遇到了一个不同的小计问题。它正在添加总数,但如果我有两个以上的项目小计,就会给我 Nan 问题...
最好的解决办法是什么?
提前致谢!!! :)
我认为您遇到了 "typecasting" 由于未初始化变量的数学问题。
尝试将其添加到代码块的顶部-
$burgerTotal = 0;
$pizzaTotal = 0;
$porkTotal = 0;
$icecreamTotal = 0;
但是您在某处也得到了字符串而不是整数。这也需要纠正。
例如
var a = 10; var b; a + b
//returns NaN
var a = 10; var b; a.toString() + b
//returns "10undefined"
编辑- 我相信我找到了。 .toFixed()
将您的整数转换为字符串。使用 $orderSubTotal
更改浮点数或更改
$burgerTotal = ($burgerCounter * $burgerPrice).toFixed(2);
到
$burgerTotal = parseFloat(($burgerCounter * $burgerPrice).toFixed(2));
注意:很多人都有类似的问题,但我的代码设置略有不同,因此这些解决方案在这里不起作用。
我有一个小计变量,它应该添加每个项目的每个总计(价格 * 数量)和 return 合并总计。我得到小计返回为:8.99undefinedundefinedundefined。如果我现在添加一个新项目:8.9911.99undefinedundefined
这是我的代码:
// defining Order Items
// ea Item creates a new row with 3 td cells. Includes Item description and Price
var $burger = $("<tr><td class='addedBurger'>Royale w/ Cheese</td><td></td><td>.99</td> <td id='burgerCount'></td> </tr>");
var $pizza = $("<tr><td class='addedPizza'>Arugula Pizza</td><td></td><td>.99</td> <td id='pizzaCount'></td> </tr>");
var $pork = $("<tr><td class='addedPork'>Smoked Pork Ribs</td><td></td><td>.99</td> <td id='porkCount'></td> </tr>");
var $icecream = $("<tr><td class='addedIceCream'>Ice Cream Biscuit</td><td></td><td>.99</td> <td id='icecreamCount'></td> </tr>");
// Tbody(Order Items get prepended to here)
var $tbody = $('#placeOrderHere');
// BURGER
var $burgerTotal;
var $burgerCounter = 0;
var $burgerPrice = 8.99;
// Add to Order: Burger Button
$( "#place-order1" ).click(function() {
// adds burger item table row
$burger.prependTo($("#placeOrderHere"));
// counts burgers
$burgerCounter ++;
// updates burger quanities in row td
$('#burgerCount').text($burgerCounter);
$burgerTotal = ($burgerCounter * $burgerPrice).toFixed(2);
$orderSubTotal = ($burgerTotal + $pizzaTotal + $porkTotal + $icecreamTotal);
$('#subtotal').text($orderSubTotal);
});
// Defining Subtotal
var $orderSubTotal;
//$orderSubtotal = $burgerTotal + $pizzaTotal + $porkTotal + $icecreamTotal;
// console.log($orderSubtotal);
让这个 post 更短。我只包含了四个项目中的一个 - 每个项目代码都是相同的。只是名称不同...所以 Pizza 有变量 $pizzaTotal、$pizzaCounter、$pizzaPrice 等,
这部分工作我似乎无法让小计工作正常。在将 tofixed 放在 $itemTotal 上之前,我遇到了一个不同的小计问题。它正在添加总数,但如果我有两个以上的项目小计,就会给我 Nan 问题...
最好的解决办法是什么? 提前致谢!!! :)
我认为您遇到了 "typecasting" 由于未初始化变量的数学问题。
尝试将其添加到代码块的顶部-
$burgerTotal = 0;
$pizzaTotal = 0;
$porkTotal = 0;
$icecreamTotal = 0;
但是您在某处也得到了字符串而不是整数。这也需要纠正。
例如
var a = 10; var b; a + b
//returns NaN
var a = 10; var b; a.toString() + b
//returns "10undefined"
编辑- 我相信我找到了。 .toFixed()
将您的整数转换为字符串。使用 $orderSubTotal
更改浮点数或更改
$burgerTotal = ($burgerCounter * $burgerPrice).toFixed(2);
到
$burgerTotal = parseFloat(($burgerCounter * $burgerPrice).toFixed(2));