因此,使用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));
    }
}

最佳答案

好的,如果我对您的理解正确,则您希望根据商品数量以一种整洁的方式对给定的价格施加折扣。首先,我将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。

09-16 09:23