因此,我有一个正在运行的购物车页面,但是一旦用户总数达到(例如)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();
});
}
});
答案 0 :(得分:0)
在subtotal + tax >= 50
时将出货量设置为零(假设这是业务规则)。
var shipping = subtotal > 0 && (subtotal + tax < 50) ? shippingRate : 0;
然后,出于显示目的,在shipping === 0
时将装运值元素设置为空。三元运算符是一种实现方法。
$('#cart-shipping').html(shipping === 0 ? '' : shipping.toFixed(2));