如何在 JavaScript 中为销售价格添加税金和交易
How to add tax and deals to a sales price in JavaScript
我的项目是创建一个销售钢笔、铅笔和橡皮的网站。我需要帮助计算税金并添加交易和运费。如果住在萨斯喀彻温省,则没有运费,税率为 5%,如果他们花费至少 30 美元,他们将获得 5 美元的税后优惠。如果他们住在艾伯塔省,运费为 2 美元,税率为 5%,并且没有优惠。如果他们住在马尼托巴省,运费为 2 美元,税率为 6%,并且没有优惠。
我试过 if 语句,但没有任何结果。我该如何调试?
function updateCartTotal() {
var cartItemContainer = document.getElementsByClassName('cart-items')[0]
var cartRows = cartItemContainer.getElementsByClassName('cart-row')
var order_total = 0
for (var i = 0; i < cartRows.length; i++) {
var cartRow = cartRows[i]
var priceElement = cartRow.getElementsByClassName('cart-price')[0]
var quantityElement = cartRow.getElementsByClassName('cart-quantity-input')[0]
var price = parseFloat(priceElement.innerText.replace('$', ''))
var quantity = quantityElement.value
order_total = order_total + (price * quantity)
}
order_total = Math.round(order_total * 100) / 100
document.getElementsByClassName('cart-total-price')[0].innerText = '$' + order_total
}
<select id="province">
<option value="saskatchewan">Saskatchewan</option>
<option value="alberta">Alberta</option>
<option value="manitoba">Manitoba</option>
</select>
我希望它能显示所有内容
我看到你问的是概念性问题。
我会通过在 select 下拉列表中添加数据属性来解决这个问题。然后在 select 变化上用一个简单的函数获取值,并将其整合到您的价格方程中。
您可以在此处阅读有关数据属性的信息:https://www.w3schools.com/tags/att_global_data.asp and https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
1) 添加数据属性
<select id="province">
<option value="saskatchewan" data-shipping-cost="0" data-tax="0.05" data-deal-limiter="30" data-deal-coupon="5'>Saskatchewan</option>
...
</select>
2) 获取 selected 值(请注意数据属性的驼峰式访问模式)
document.getElementById("province").addEventListener("change", function() {
const select = document.getElementById("province"),
selectedProvince = select.options[select.selectedIndex],
shippingCost = selectedProvince.dataset.shippingCost ,
tax = selectedProvince.dataset.tax,
dealLimiter = selectedProvince.dataset.dealLimiter,
dealCoupon = selectedProvince.dataset.dealCoupon;
});
3) 融入你的方程式
这部分你可以自己做;我教钓鱼,我不授鱼。 (提示:涉及 if 语句)。
我的项目是创建一个销售钢笔、铅笔和橡皮的网站。我需要帮助计算税金并添加交易和运费。如果住在萨斯喀彻温省,则没有运费,税率为 5%,如果他们花费至少 30 美元,他们将获得 5 美元的税后优惠。如果他们住在艾伯塔省,运费为 2 美元,税率为 5%,并且没有优惠。如果他们住在马尼托巴省,运费为 2 美元,税率为 6%,并且没有优惠。
我试过 if 语句,但没有任何结果。我该如何调试?
function updateCartTotal() {
var cartItemContainer = document.getElementsByClassName('cart-items')[0]
var cartRows = cartItemContainer.getElementsByClassName('cart-row')
var order_total = 0
for (var i = 0; i < cartRows.length; i++) {
var cartRow = cartRows[i]
var priceElement = cartRow.getElementsByClassName('cart-price')[0]
var quantityElement = cartRow.getElementsByClassName('cart-quantity-input')[0]
var price = parseFloat(priceElement.innerText.replace('$', ''))
var quantity = quantityElement.value
order_total = order_total + (price * quantity)
}
order_total = Math.round(order_total * 100) / 100
document.getElementsByClassName('cart-total-price')[0].innerText = '$' + order_total
}
<select id="province">
<option value="saskatchewan">Saskatchewan</option>
<option value="alberta">Alberta</option>
<option value="manitoba">Manitoba</option>
</select>
我希望它能显示所有内容
我看到你问的是概念性问题。
我会通过在 select 下拉列表中添加数据属性来解决这个问题。然后在 select 变化上用一个简单的函数获取值,并将其整合到您的价格方程中。
您可以在此处阅读有关数据属性的信息:https://www.w3schools.com/tags/att_global_data.asp and https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
1) 添加数据属性
<select id="province">
<option value="saskatchewan" data-shipping-cost="0" data-tax="0.05" data-deal-limiter="30" data-deal-coupon="5'>Saskatchewan</option>
...
</select>
2) 获取 selected 值(请注意数据属性的驼峰式访问模式)
document.getElementById("province").addEventListener("change", function() {
const select = document.getElementById("province"),
selectedProvince = select.options[select.selectedIndex],
shippingCost = selectedProvince.dataset.shippingCost ,
tax = selectedProvince.dataset.tax,
dealLimiter = selectedProvince.dataset.dealLimiter,
dealCoupon = selectedProvince.dataset.dealCoupon;
});
3) 融入你的方程式
这部分你可以自己做;我教钓鱼,我不授鱼。 (提示:涉及 if 语句)。