那么如何在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));
}
}
答案 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));