试图找出某些东西的逻辑并寻找任何类型的指针。
我有6天以上的清单。我已经在每个div上都有一个计数器,计算它连续几天。原因是因为如果您在2017年1月30日,01/31/17和02/01/17预订产品,您将获得基于连续连续天数的折扣。如果天数中断,链条会重新开始,正如您在consec="1"
再次开始时所看到的那样。折扣仅回顾4天,并计算每个产品的价格。
例如:
假设用户预订了第1天的产品,第2天的3个,第3天的2个,第4天的5个,第5天的2个。
第1天:他们会以正常价格购买1件产品。 总计:50
第2天:他们将以“连续两天”折扣价获得1件产品,并以正常价格获得2件产品,因为它现在是以前的连锁店的一部分。 总计145
第3天:他们将以“连续三天”的折扣价格(从第1天和第2天)获得1件产品,并且以“连续两天”折扣价购买1件产品,并且没有正常价格的产品没有一个不属于链条的一部分。 总计85
第4天:他们现在将获得1件产品“连续4天”的折扣价(因为所有4天至少有1件),1件产品以“连续3天”的折扣价格(不是3件因为第3天下降了1,1仍然是4天的价格),然后3是正常价格,因为前一天它只有2,两者都已经在较大的折扣中占据,因为这3个是品牌当天是新的,基本上。 总计225
第5天:这一天在第1天停止考虑任何事情,因为连续折扣只能追溯到4天。它有两个产品在“连续4天”的价格,因为至少有2个产品连续4天回来。 总计70
所以这有点令人困惑......
我想要做的是修改输入data-product-id="1"
的任何数量时,更改它可能影响的每一行的计算价格。
我尝试过几种不同的方式来讨论每个语句,第一种方法是我尝试检查consecDayCount
,如果它是4或更大,那么做一些逻辑,如果它是3则执行其他逻辑,并且如果是2做其他逻辑。这最终成了一场噩梦,从未正常运作。如果有一天没有这个产品,就会遇到问题。
我认为它需要与数组或多维数组有关吗?通过它们循环并以某种方式跟踪每个价格的数量,将价格加在一起以获得价格输入的每个总价格。
我需要的只是输入正确总价的价格输入,我不需要在任何地方列出每个价格。
关于如何最好地循环并计算每一个的任何建议都会很棒。真的想了解最好的方法。
$('.date-row').on('change keyup', '.qty', function() {
var productId = $(this).data('product-id');
var consecDayCount = $(this).closest('.date-row').data('consec');
if (productId == 1) {
var standardPrice = 50;
var consPriceTwo = 45;
var consPriceThree = 40;
var consPriceFour = 35;
$('.qty[data-product-id="1"]').each(function() {
// where I'm running into trouble
// insert some missing logic to calculate each Qty level
//var standardQty = $(this).val(); // is this what you meant? (- not left by question asker)
// Not really, the standardQty would be the only qty in only
// the case where none of the products will be given a
// consecutive day discount.
// standardQty is the qty of products at the standard price,
// which must be calculated based off how many of the previous
// consecutive days products carry over, like in the example. (- response from question asker)
var dateRow = $(this).closest('.date-row');
var priceInput = dateRow.find('.price');
var standardTotal = standardQty * standardPrice;
var consPriceTwoTotal = consTwoQty * consPriceTwo;
var consPriceThreeTotal = consThreeQty * consPriceThree;
var consPriceFourTotal = consFourQty * consPriceFour;
var newPrice = standardTotal + consPriceTwoTotal + consPriceThreeTotal + consPriceFourTotal;
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="date-row" date-consec="1">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="2">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="3">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="4">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="5">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="6">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="1">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="2">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
<div class="date-row" date-consec="3">
<input name="qty" class="qty" type="number" data-product-id="1">
<input name="price" class="price" type="text">
</div>
在HTML中注意,底部3个div的连续日期已经开始,因为它们不是连接到其他日子的日子,让我们在这个例子中说它们是在月末而第一个设置在月初。所以他们的连续折扣将重新开始。