2015-04-15 70 views
1

那么,如何在JavaScript中或与jQuery的额外帮助能够得到价格变化。例如,第一件商品是一套450美元的套装,其后的每件商品都是150美元。但这里有一个窍门,客户可以改变这个价格,所以450美元现在是225美元,另外是75美元。我知道如何用一堆if语句来做到这一点,但看起来很乱。有没有更好的办法?价格变化

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

编辑:这是如何工作

项目#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

你可以做一个jsfiddle.com或codepen.io?我对你问的问题有点困惑。 –

+0

你可以做的一件事就是在总数上应用下降 dropTotal = dropAmount * dropPrice; if(dropResult!= 1){drop_Total = dropTotal/2; (“#dropPrice”)。html(“Price Total:$”+ dropTotal.toFixed(2)); –

+0

不能作为后端是与MySQL数据库的Python。让我看看如何更好地解释这一点。所以基本上它会添加列表中的所有项目,所以如果列表中只有一个项目,它会添加450,并且客户端有一个单选按钮,可以将价格更改为一半。现在我的问题是我将如何使每个任何额外的项目不同的价格基于无线电输入,而不必做一堆如果其他语句 – Darkrum

回答

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。

+0

我会试试这个,是的,我认为这是指向我在正确的方向。 – Darkrum

+0

嘿詹姆斯你可以看看这里我修改我的代码,但即时通讯运行到一些其他问题http://stackoverflow.com/questions/29680499/pricing-variations-v2 – Darkrum

0

的快速变化,你可以做,这是类似的东西:

dropTotal = dropAmount * dropPrice; 

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

检查这个fiddle

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

这[[小提琴](http:// jsfiddle。 net/2zvashxu/4 /)将更加明确 –

+0

并且这里是一个函数,如果你需要它作为函数'function Calculate() { var dropPrice = 450; var itemsCount = $('#items .itemadd')。length; (':checked'); var():$(“input”[name = drop]“)。 (450+((450 *(itemsCount-1))/ 3))/(Number(haveDiscount)+ 1); $('#dropPrice')。text(“Price Total:$”+ Total); }'这里是[Fiddle](http://jsfiddle.net/2zvashxu/6/) –