价格变动

那么如何在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。

你可以快速做出改变,就是这样的:

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

检查这个小提琴

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