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

Javascript 计算所有项目总计到小计Jquery,javascript,jquery,subtotal,Javascript,Jquery,Subtotal,注意:很多人都有类似的问题,但我的代码设置有点不同,所以这些解决方案在这里不起作用 我有一个小计变量,它应该为每个项目添加每个总计(价格*数量),并返回合并的总计。我得到的小计是:8.99未定义未定义未定义。如果我添加一个新项目,它现在是:8.9911.99undefinedundefined 这是我的密码: // defining Order Items // ea Item creates a new row with 3 td cells. Includes Item descriptio

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

我有一个小计变量,它应该为每个项目添加每个总计(价格*数量),并返回合并的总计。我得到的小计是:8.99未定义未定义未定义。如果我添加一个新项目,它现在是: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);
//定义订单项
//ea项创建一个包含3个td单元格的新行。包括项目说明和价格
var$burger=$(“Royale w/奶酪$8.99”);
var$pizza=$(“芝麻菜比萨$11.99”);
var$猪肉=$(“烟熏排骨$14.99”);
var$冰淇淋=$(“冰淇淋饼干$7.99”);
//Tbody(订单项在此处预先添加)
var$tbody=$(“#placeOrderHere”);
//汉堡
var$Total;
var$burgerCounter=0;
var$burgerPrice=8.99;
//添加到订单:汉堡按钮
$(“#place-order1”)。单击(函数(){
//添加汉堡项目表行
$burger.prependTo($(“#placeOrderHere”);
//数汉堡
$counter++;
//更新第td行的汉堡数量
$('#burgerCount').text($burgerCounter);
$burgerTotal=($burgerCounter*$burgerPrice).toFixed(2);
$orderSubTotal=($burgerTotal+$pizzaTotal+$porkTotal+$icecreamTotal);
$(“#小计”).text($orderSubTotal);
});
//定义小计
var$订单小计;
//$orderSubtotal=$burgerTotal+$pizzaTotal+$porkTotal+$icecreamTotal;
//log($orderSubtotal);
让这篇文章更简短。我只包括四个项目中的一个-每个项目的代码都是相同的。只是名字不同。。。比萨饼有$pizzaTotal、$pizzaCounter、$pizzaPrice等变量

这部分工作正常,我只是无法正确地进行小计。在我把tofixed放在$itemTotal之前,我遇到了一个不同的问题,即小计。这是加总,但如果我有两个以上的项目小计给我一个问题

最好的办法是什么? 提前谢谢!!!:)

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

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

$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);


JavaScript本身既没有“类型”也没有“类型转换”。您可能指的是,未初始化的变量具有特殊值
undefined
,当您尝试对它们进行算术运算时,返回
NaN
。是的!这是未初始化的变量!非常感谢。我注意到的一件事是两个固定的,或者可能是parse int在舍入我的数字?8.99现在是8吗?我怎么解决的?我找到了答案。改用parseFloat。谢谢你的帮助!:)如果您将HTML和JavaScript作为一个代码片段包含进来,人们会更少猜测。
$burgerTotal = parseFloat(($burgerCounter * $burgerPrice).toFixed(2));