所以我试图创建一个基于一组规则的计算器。 现在您可以看到,我做了大部分我想做的事情,除了我现在将尝试解释的一件事。
1-假设在value1等于1和value2 to等于1500之间。 该计算将得出扣除类别中的1499,价格类别中的149.9。
Value2 - Value1 = difference
然后
Difference*0.1 = price
现在在这里我被卡住了。
我想要值2大于1500而不是公式
"Difference*0.1 = price"
它更改为
"Difference*0.2 = price"
并且当value2大于2000时,公式将更改为
"Difference*0.3 = price"
现在我使用了一个if语句,效果很好
if (value2 < 1500) {
$('#price').val(diff*0.1);
}
但并没有到此结束。
让我们说
Value1 = 600
和
Value2 = 2100
我希望calc进行以下操作
1500 - 600 = 900
900 * 0.1= 90
然后需要
2000 - 1500 = 500
500*0.2 = 100
然后需要
2100 - 2000 = 100
100*0.3 = 30
90+100+30 = 220 (the final price)
希望该示例说明了我希望自己的计算执行的操作。 如果感到困惑,我很抱歉,如果有人愿意,我很乐意解释更多。
<script>
$(function(){
$('#value1, #value2').keyup(function(){
var value1 = parseFloat($('#value1').val()) || 0;
var value2 = parseFloat($('#value2').val()) || 0;
$('#diff').val(value2 - value1);
var diff = parseFloat($('#diff').val()) || 0;
$('#price').val(diff*0.1);
/*if (value2 < 1500) {
$('#price').val(diff*0.1);
}
if (value2 > 1500){
$('#price').val(diff*10);
}*/
});
});
</script>
<html>
<header>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://use.fontawesome.com/releases/v5.0.8/js/all.js"></script>
</header>
<div class="container">
<div class="row">
<div class="col-sm-6 col-sm-offset-3 well">
<h4 class="text-center">Live Sum of values using jQuery</h4> <hr/>
<form class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2" for="value1">Value 1</label>
<div class="col-sm-10">
<input type="number" name="value1" id="value1" class="form-control" min="0" placeholder="Enter first value" required min="500" max="5000" />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="value2">Value 2</label>
<div class="col-sm-10">
<input type="number" name="value2" id="value2" class="form-control" min="0" placeholder="Enter second value" min="500" required />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="diff">Difference</label>
<div class="col-sm-10">
<input type="number" name="diff" id="diff" class="form-control" readonly />
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="price">Total Price</label>
<div class="col-sm-10">
<div class="col-sm-10">
<input type="number" name="price" id="price" class="form-control" readonly />
</div>
</div>
</form>
</div>
</div>
</div>
</html>
答案 0 :(得分:3)
这是您要找的吗?
function get_price(val1, val2) {
if (val2 > 2000) {
return (val2 - 2000) * .3 + get_price(val1, 2000);
}
if (val2 > 1500) {
return (val2 - 1500) * .2 + get_price(val1, 1500);
}
return (val2 - val1) * .1;
}
get_price(600, 2100) === 220
或者也许
function get_price(val1, val2) {
if (val2 > 2000) {
return (val2 - 2000) * .3 + 500 * .2 + (1500 - val1) * .1;
}
if (val2 > 1500) {
return (val2 - 1500) * .2 + (1500 - val1) * .1;
}
return (val2 - val1) * .1;
}
或者,如果您讨厌可读性,则可以选择这种暴行
var get_price = (v1, v2) => v2>2000?(v2-2000)*.3+500*.2+(1500-v1)*.1:(v2>1500?(v2-1500)*.2+(1500-v1)*.1:(v2-v1)*.1);