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

我有一个小计变量,应该为每个项目添加每个总计(价格*数量),然后返回合并的总计。我得到的小计又回来了: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等,

这部分工作正常,我似乎无法正确汇总所有小计。在将固定金额放到$ itemTotal上之前,我有一个小计的小问题。它增加了总数,但是如果我有两个以上的小计,就会给我带来Nan问题。

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

最佳答案

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

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

$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 - 计算所有项目总计到小计Jquery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39196816/

10-12 13:24