计算所有项目总计到小计 Jquery

Posted

技术标签:

【中文标题】计算所有项目总计到小计 Jquery【英文标题】:Calculate all item totals to subtotal Jquery 【发布时间】:2016-08-28 23:45:42 【问题描述】:

注意:很多人都有类似的问题,但我的代码设置略有不同,因此这些解决方案在这里不起作用。

我有一个小计变量,应该为每个项目添加每个总计(价格 * 数量)并返回组合总计。我得到的小计回来了: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>$8.99</td> <td id='burgerCount'></td> </tr>");
var $pizza = $("<tr><td class='addedPizza'>Arugula Pizza</td><td></td><td>$11.99</td> <td id='pizzaCount'></td> </tr>");
var $pork = $("<tr><td class='addedPork'>Smoked Pork Ribs</td><td></td><td>$14.99</td> <td id='porkCount'></td> </tr>");
var $icecream = $("<tr><td class='addedIceCream'>Ice Cream Biscuit</td><td></td><td>$7.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);

为了使这篇文章更短。我只包括了四个项目中的一个 - 每个项目的代码都是相同的。只有名称不同...所以 Pizza 有变量 $pizzaTotal、$pizzaCounter、$pizzaPrice 等,

这部分正在工作我似乎无法让小计正常工作。在将 tofixed 放在 $itemTotal 上之前,我遇到了一个不同的小计问题。如果我有两个以上的小计项目,它会增加总数,但会给我 Nan 问题......

最好的解决方法是什么? 提前致谢!!! :)

【问题讨论】:

如果您将 htmljavascript 作为 sn-p 包含在内,人们会减少猜测。 【参考方案1】:

我相信由于未初始化变量的数学运算,您遇到了“类型转换”问题。

尝试将其添加到代码块的顶部 -

$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() 将您的 int 转换为字符串。使用$orderSubTotal 更改浮点数或更改

 $burgerTotal = ($burgerCounter * $burgerPrice).toFixed(2);

$burgerTotal = parseFloat(($burgerCounter * $burgerPrice).toFixed(2));

【讨论】:

JavaScript 本身没有“类型”或“类型转换”。您可能指的是未初始化变量具有特殊值undefined,并在您尝试对其进行算术运算时返回NaN 是的!这是未初始化的变量!谢谢!!!我注意到的一件事是两个固定的,或者可能是解析 int 正在四舍五入我的数字? 8.99现在是8?我该如何解决? 我找到了答案。改为使用 parseFloat。感谢您的帮助! :)

以上是关于计算所有项目总计到小计 Jquery的主要内容,如果未能解决你的问题,请参考以下文章

在 Shiny 中将总计/小计添加到数据表的底部

Magento 2 / 价格和小计 4 位小数 但增值税和总计 2 位小数

使用小计和总计的计算

结帐 magento 1.5 中的小计和总计加倍

表 Javascript 中的小计和总计数

使用小计和总计的计算