Skip to content Skip to sidebar Skip to footer

Price Variations

So how would one in JavaScript or with the added help of jQuery be able to get price variations. For example the first item is a set base at $450 and every item after that is a add

Solution 1:

Okay, so if I understand you correctly, you want to apply a discount to the given price in a clean manner, depending on the number of items. I'd first start by applying the DRY (Don't Repeat Yourself) principle to your code, and putting variables in local scope:

//var dropResult = $("input[name=drop]:checked").val();//this line doesn't actually do anything, so I removed it. It will always return true, as you're using the :checked pseudo-selector to only select checked checkboxes.

$(function (){
    $(".t").click(function(){
      dropCalculate(450);
    });
});

functiondropCalculate(dropPrice) {
    var dropAmount = $(".itemadd", "#items").length,
        dropTotal = dropAmount * dropPrice;

    if (dropResult != 1) {
        dropTotal = dropTotal / 2;
    }

    $("#dropPrice").html("Price Total: $" + dropTotal.toFixed(2));
}

Which is a lot cleaner. Then, if you have more complex discount rules, or multiple rules for multiple products, you can use an object for that. Here is a simple example of that:

$(function (){
    $(".t").click(function(){
      var pricesObj = {
          'default': 75,
          '1':450,
          '2':225
      };

      dropCalculate(pricesObj);
    });
});

functiondropCalculate(priceObj) {
    var dropAmount = $(".itemadd", "#items").length;

    if (priceObj[dropAmount]) {
        dropTotal = priceObj[dropAmount] * dropAmount;
    }
    else{
        dropTotal = priceObj['default'] * dropAmount;
    }

    $("#dropPrice").html("Price Total: $" + dropTotal.toFixed(2));
}

If you need any help understanding that, just ask!

Update: I misunderstood your use case, but this should still point you in the right direction. In my code, if there is 1 product, the price is 450, 2 is 225, and more is 75 each.

Solution 2:

a quick change you could make, it's something like that:

dropTotal = dropAmount * dropPrice; 

$("#dropPrice").html("Price Total: $" + dropResult == 1 ? dropTotal.toFixed(2)) : (dropTotal / 2).toFixed(2));

Solution 3:

check this fiddle

 $('#dropPrice').text( '$' + (450 + ((450 * ($('#items .itemadd').length - 1)) / 3)) / (Number($("input[name=drop]").is(':checked')) + 1));

Post a Comment for "Price Variations"