价格变动

时间:2015-04-15 19:14:46

标签: javascript jquery

那么如何在JavaScript或jQuery的附加帮助中获得价格变化。例如,第一个项目是450美元的设定基础,之后的每个项目是额外的150美元。但是客户能够改变这个价格的诀窍是450美元,现在是225美元,另外75美元。我知道如何用一堆if else语句来做这件事,但这看起来很麻烦。还有更好的方法吗?

这是我的代码到目前为止它只是除以两部分而不是添加部分。

编辑:有关其工作原理的进一步说明

项目#1 450
项目#2 150
项目#3 150
满[x]半[]

项目#1 225
项目#2 75
项目#3 75
满[]半[x]

每个附加实际上是基数除以3所以450 = 150和225 = 75
,而一半是原始基数450/2 = 225

var dropResult;
$(function (){
        $(".t").click(function(){
        dropResult = $("input[name=drop]:checked").val();
        dropCalculate();
        });
});

function dropCalculate() {
var dropPrice = 450;
    var dropAmount = $(".itemadd", "#items").length;
    $("#dropAmount").html("Total: " + dropAmount);
    if (dropResult == 1) {
        dropTotal = dropAmount * dropPrice;
        $("#dropPrice").html("Price Total: $" + dropTotal.toFixed(2));
    }else {
        dropTotal = dropAmount * dropPrice / 2;
        $("#dropPrice").html("Price Total: $" + dropTotal.toFixed(2));
    }   
}

3 个答案:

答案 0 :(得分:2)

好的,所以如果我理解正确的话,您希望以干净的方式对给定价格应用折扣,具体取决于项目数量。我首先将DRY(不要重复自己)原则应用于您的代码,并将变量放在本地范围内:

//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);
    });
});

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

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

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

哪个更清洁。然后,如果您有更复杂的折扣规则或多个产品的多个规则,则可以使用对象。这是一个简单的例子:

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

      dropCalculate(pricesObj);
    });
});

function dropCalculate(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));
}

如果你需要任何帮助,请问!

更新:我误解了你的用例,但这仍然指向正确的方向。在我的代码中,如果有1个产品,则价格为450,2为225,更多为75。

答案 1 :(得分:0)

你可以做出快速改变,就像那样:

dropTotal = dropAmount * dropPrice; 

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

答案 2 :(得分:0)

检查此fiddle

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