因此,使用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。