如何在 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 语句)。