在这里,我尝试在var totalSum = (grandTotal + getShippingCost).toFixed(3);
行中添加两个十进制值,然后将值放在var getSumTd = $("tr#sumTr").find("span#sumSpan");
中。
但是问题是var totalSum = (grandTotal + getShippingCost).toFixed(3);
会抛出一个错误说Uncaught TypeError: value.toFixed is not a function
。
我的代码的任何帮助将是巨大的帮助。
以下是我的脚本
<script>
$('button#value-plus').on('click', function () {
debugger;
var divUpd = $(this).closest("tr").find('#qnty');
var subtotalcontainer = $(this).closest("tr").find('span#subtotal');
var mainGrandTotalcontainer = $("tr#mainGtTr").find("#mainGt");
var mainGtVal = parseFloat($("tr#mainGtTr").find('span#shippingCost').text());
var getSumTd = $("tr#sumTr").find("span#sumSpan");
var getShippingCost = parseFloat($("tr#mainGtTr").find('span#mainGt1').text());
var bklId = $(this).closest("tr").find('#pid').val();
var url = "/Product/incrementcart";
$.getJSON(url, { prdid: bklId }, function (data) {
debugger;
divUpd.val(data.qty);
var subTotal = data.qty * data.price;
subtotalcontainer.text(subTotal.toFixed(2));
var grandTotal = (mainGtVal + data.price).toFixed(3);
mainGrandTotalcontainer.text(grandTotal);
var totalSum = (grandTotal + getShippingCost).toFixed(3);
getSumTd.text(totalSum);
}).success(function () {
debugger
var url = "/Product/cartupdate";
$.get(url, function (data) {
debugger;
$(".shopping_button").html(data);
})
});
});
以下是我的HTML
<tbody>
@foreach (var item in Model)
{
<tr>
@Html.HiddenFor(model => item.ProductId, htmlAttributes: new { @id = "pid" })
<td data-title="Product Image & name" class="t_md_align_c">
<img src="images/quick_view_img_10.jpg" alt="" class="m_md_bottom_5 d_xs_block d_xs_centered">
<a href="#" class="d_inline_b m_left_5 color_dark">@Html.DisplayFor(modelItem => item.ProductName)</a>
</td>
<td data-title="Stock">
@Html.DisplayFor(modelItem => item.Instock)
</td>
<td data-title="Price">
<p class="f_size_large color_dark">$@Html.DisplayFor(modelItem => item.ProductPrice)</p>
</td>
<td data-title="Quantity">
<div class="clearfix quantity r_corners d_inline_middle f_size_medium color_dark m_bottom_10">
<button class="bg_tr d_block f_left" data-direction="down" id="value-minus">-</button>
<input type="text" name="" id="qnty" readonly value="@item.Quantity" class="f_left">
<button class="bg_tr d_block f_left" data-direction="up" id="value-plus">+</button>
</div>
</td>
<td data-title="Subtotal">
<p class="f_size_large fw_medium scheme_color">$<span id="subtotal">@Html.DisplayFor(modelItem => item.Total)</span></p>
</td>
<td data-title="Remove">
<a href="#" class="color_dark"><i class="fa fa-times f_size_medium m_right_5"></i>Remove</a><br>
</td>
</tr>
}
<tr id="mainGtTr">
<td colspan="4" class="v_align_m d_ib_offset_large t_xs_align_l">
<div class="d_ib_offset_0 d_inline_middle half_column d_xs_block w_xs_full m_xs_bottom_5">
<button class="button_type_6 bg_scheme_color f_size_large r_corners tr_all_hover color_light m_bottom_20">Check Out </button>
</div>
<p class="fw_medium f_size_large t_align_r scheme_color p_xs_hr_0 d_inline_middle half_column d_ib_offset_normal d_xs_block w_xs_full t_xs_align_c">Grand Total:</p>
</td>
<td colspan="2" class="v_align_m">
<p class="fw_medium f_size_large scheme_color m_xs_bottom_10">$<span id="mainGt">@ViewBag.SubTotal</span></p>
<p style="font-style:oblique">Include <i class="fa fa-rupee"></i> <span id="shippingCost">@ViewBag.ShipingCost</span> shipping cost</p>
</td>
</tr>
@{
var sum = ViewBag.SubTotal + ViewBag.ShipingCost;
}
<tr id="sumTr">
<td>
<span id="sumSpan">@sum</span>
</td>
</tr>
</tbody>
答案 0 :(得分:0)
toFixed()
方法设置 编号 的格式。当前值的类型为 string ,而不是 算术加法 , 字符串串联< / em> 正在发生。在添加和使用toFixed()
之前将其转换为 number :
更改:
var totalSum = (grandTotal + getShippingCost).toFixed(3);
收件人
var totalSum = (Number(grandTotal) + Number(getShippingCost)).toFixed(3);
答案 1 :(得分:0)
toFixed方法不适用于non-number
值。您必须先使用toFixed
方法将值解析为Number。
let str = `123.123456`
console.log(Number(str).toFixed(3))
console.error(str.toFixed(3))
答案 2 :(得分:0)
仅浮点型,整型值具有toFixed
。控制您的变量并查看它们是哪种类型。
console.log(("4" + 5).toFixed(3)); // error
console.log((5 + 5).toFixed(3)); // yeep its working
答案 3 :(得分:0)
检查两个变量的数据类型。它们应该是数字而不是字符串。 toFixed方法不适用于其他数据类型。另外,请确保在将字符串转换为数字时,字符串中的值在内部是“ 22”之类的数字,而不是“ hello”,因为将其转换为数字可能会给您NaN,并且您的程序可能会失败。
答案 4 :(得分:0)
.toFixed() 只是一个数字函数并返回一个字符串。通过在多个赋值中使用 toFixed,您将一个数字转换为一个字符串,将多个字符串连接在一起,然后尝试对一个字符串进行数值运算。
下面的代码会报错。
var grandTotal = (mainGtVal + data.price).toFixed(3); // grandTotal is a string
var totalSum = (grandTotal + getShippingCost).toFixed(3); // grandTotal + getShippingCost is a String, which doesn't have the toFixed function
如果需要避免浮点错误,则先将字符串先转换为数字再与另一个数字相加,例如:
var grandTotal = (mainGtVal + data.price).toFixed(3);
grandTotal = Number.parseFloat(grandTotal);
var totalSum = (grandTotal + getShippingCost).toFixed(3);
否则,请等到您完成计算后再使用 toFixed 来四舍五入到您要显示的小数位数,例如:
var grandTotal = mainGtVal + data.price;
var totalSum = (grandTotal + getShippingCost).toFixed(3);
grandTotal = grandTotal.toFixed(3);