javascript - 使用 JavaScript 创建特定计算器

标签 javascript

所以我试图创建一个基于一组规则的计算器。 现在,如您所见,我做了大部分我想要它做的事情,除了我现在将尝试解释的一件事。

1- 假设 value1 等于 1,value2 等于 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

我希望计算执行以下操作,

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>

最佳答案

这是您要找的吗?

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);

关于javascript - 使用 JavaScript 创建特定计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53794440/

相关文章:

javascript - 使用 Karma 和 Jasmine 从 JS 测试文件测试编译的 TypeScript

javascript - DataTables - 具有 2 表选择器的 .search() 函数

javascript - 单击链接提交表单模拟特定按钮

javascript - 如何正确调用photobooth.js

javascript - 我无法使用带有 react.js 的 redux 从 github api 获得响应

javascript - 如何以编程方式在 JavaScript 中设置对象属性?

javascript - 我如何将回调结果传递给变量并自由访问 var

javascript - Stringify在chrome上工作,但在electronic js应用中导致错误

javascript - 从 datepicker 获取值并分配给 php

c# - JSIL与Script#与SharpKit