javascript - Javascript添加运费
问题描述
当客户选择运输方式时,我希望费用显示在结帐中。我遇到的问题是运费没有出现在结帐中。
这是我的javascript
代码:
var shopcart = [];
$(document).ready(function () {
outputCart();
$(".productItem").click(function (e) {
e.preventDefault();
var itemInfo = $(this.dataset)[0];
itemInfo.qty = 1;
var itemInCart = false;
$.each(shopcart, function (index, value) {
//console.log(index + ' ' + value.id);
if(value.id == itemInfo.id) {
value.qty = parseInt(value.qty) + parseInt(itemInfo.qty);
itemInCart = true;
}
})
if(!itemInCart) {
shopcart.push(itemInfo);
}
sessionStorage["sc"] = JSON.stringify(shopcart);
outputCart();
})
function outputCart() {
if(sessionStorage["sc"] != null) {
shopcart = JSON.parse(sessionStorage["sc"].toString());
//console.log(sessionStorage["sc"]);
$('#checkoutdiv').show();
}
var vat25 = 0.20;
var holderHTML = '';
var subtotal = 0;
var total = 899;
var shippingLimit = 899;
var shippingCost = 0 + ' kr';
var itemCount = 0;
$(".shippingBestTransport").click(function (e) {
e.preventDefault();
shippingCost = 89;
})
$.each(shopcart, function (index, value) {
//console.log(value);
var stotal = value.qty * value.price;
subtotal += stotal;
itemCount += parseInt(value.qty);
})
var totalShippingLimit = (shippingLimit - subtotal);
if(totalShippingLimit < 0) {
totalShippingLimit = 0;
}
if(itemCount != 1) {
Countending = ' Varor';
} else {
Countending = ' Vara';
}
$('.subtotal').html(formatTotal(subtotal));
$('.total').html(formatTotal(total));
$('.vat').html(formatVAT(total*vat25));
$('.shippingCost').html(shippingCost);
$('.shippingLimit').html(formatFreight(totalShippingLimit));
$('.items').html(itemCount + Countending);
}
function formatTotal(n) {
return (n/1).toFixed(2) + ' kr';
}
function formatVAT(n) {
return (n/1).toFixed(2) + ' kr';
}
function formatFreight(n) {
return (n).toFixed(0) + ' kr';
}
})
还有我的 HTML:
<a href="#" class="a-black shippingBestTransport" data-name="Best Transport" data-price="89" data-id="1">
<div class="col-sm-6">
<div class="box">
<h4>Best Transport (Nästa dag)</h4>
<p>Beställ innan klockan 13:00 för att få leverans redan nästa dag när du väljer Best Transport.</p>
<div class="box-footer text-center">
<div class="col-md-12">
<div class="inputGroup">
<span class="pull-left"><i class="fa fa-check-square-o" aria-hidden="true"></i></span>
<span class="pull-right"><b>89 kr</b></span>
</div>
</div>
</div>
</div>
</div>
</a>
因此,当用户按下“Best Transport”时,结账时应该会显示 89 的成本,但现在却没有。
$(".shippingBestTransport").click(function (e) { e.preventDefault(); shippingCost = 89; })
当用户按下带有类的按钮时,这部分代码应该做出反应,"shippingBestTransport".
到目前为止,我已经做到了。结果应该显示在这样的类中:
$('.shippingCost').html(shippingCost);
这是应该将所有变量输出到结帐页面的代码:
<div class="table-responsive">
<table class="table">
<tbody>
<tr>
<td>Subtotal:</td>
<td><span class="subtotal"></span></td>
</tr>
<tr>
<td>Fraktkostnad:</td>
<td><span class="shippingCost"></span></td>
</tr>
<tr>
<td>Totalt:</td>
<td><span class="total"></span></td>
</tr>
<tr>
<td><em>Varav moms:</em></td>
<td><span class="vat"></span></td>
</tr>
</tbody>
</table>
</div>
但是当这部分代码应该返回实际的运费以便它显示在结帐时它不会这样做。什么都没有显示,我没有错误。
解决方案
$(".shippingBestTransport").click(function (e) {
e.preventDefault();
shippingCost = 89;
})
此函数更新变量的值,但不显示任何内容。您现在必须更新 DOM 本身,例如:
$(".shippingBestTransport").click(function (e) {
e.preventDefault();
shippingCost = 89;
$('.shippingCost').html(shippingCost);
})
另一个问题是我shippingCost
在您的 html 中没有看到任何带有类的元素,您是否忘记添加该类?
推荐阅读
- javascript - 基于多个值从数组中查找和删除特定元素
- windows - GitHub 上未提供适用于 Windows 的 Neovim
- css - 在 chrome 中,我选择的 CSS 动画不再起作用,除非边框被覆盖
- reactjs - 附加来自 Fawesome 的图标问题
- javascript - 在 Google Apps 脚本 (JavaScript) 中查找列表的唯一项
- android - 如何以编程方式列出 Chromebook 上的所有应用程序?
- maven - 我可以使用什么 Maven 命令来恢复部署或“构建?
- java - Findbugs:RV_RETURN_VALUE_IGNORED_BAD_PRACTICE 使用 ExecutorService
- java - GCP 数据存储区查询嵌套实体引用 (entityB.name)
- mysql - 在 MySQL 中,我可以要求它在同一实例中将数据库完全克隆到新数据库吗?