如果金额达到一定值,则取消运费

时间:2019-07-11 17:45:42

标签: javascript html css

因此,我有一个正在运行的购物车页面,但是一旦用户总数达到(例如)50个或更高,我就不知道如何除去运输价值。在以前的版本中,该功能已经实现,因此我尝试比较并弄清楚如何在新页面中实现此功能,但是对JavaScript不够熟练。这是我现在正在使用的JavaScript。

$(document).ready(function() {

var taxRate = 0.05;
var shippingRate = 5.00; 
var fadeTime = 300;

$('.product-quantity input').change( function() {
  updateQuantity(this);
});

$('.product-removal button').click( function() {
  removeItem(this);
});

function recalculateCart()
{
  var subtotal = 0;

  $('.product').each(function () {
    subtotal += parseFloat($(this).children('.product-line-price').text());
  });

  var tax = subtotal * taxRate;
  var shipping = (subtotal > 0 ? shippingRate : 0);
  var total = subtotal + tax + shipping;

  $('.totals-value').fadeOut(fadeTime, function() {
    $('#cart-subtotal').html(subtotal.toFixed(2));
    $('#cart-tax').html(tax.toFixed(2));
    $('#cart-shipping').html(shipping.toFixed(2));
    $('#cart-total').html(total.toFixed(2));
    if(total == 0){
      $('.checkout').fadeOut(fadeTime);
    }else{
      $('.checkout').fadeIn(fadeTime);
    }
    $('.totals-value').fadeIn(fadeTime);
  });
}


function updateQuantity(quantityInput)
{
  var productRow = $(quantityInput).parent().parent();
  var price = parseFloat(productRow.children('.product-price').text());
  var quantity = $(quantityInput).val();
  var linePrice = price * quantity;

  productRow.children('.product-line-price').each(function () {
    $(this).fadeOut(fadeTime, function() {
      $(this).text(linePrice.toFixed(2));
      recalculateCart();
      $(this).fadeIn(fadeTime);
    });
  });  
}


function removeItem(removeButton)
{
  var productRow = $(removeButton).parent().parent();
  productRow.slideUp(fadeTime, function() {
    productRow.remove();
    recalculateCart();
  });
}

});

1 个答案:

答案 0 :(得分:0)

subtotal + tax >= 50时将出货量设置为零(假设这是业务规则)。

var shipping = subtotal > 0 && (subtotal + tax < 50) ? shippingRate : 0;

然后,出于显示目的,在shipping === 0时将装运值元素设置为空。三元运算符是一种实现方法。

$('#cart-shipping').html(shipping === 0 ? '' : shipping.toFixed(2));