Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据提供的信息进行计算_Javascript - Fatal编程技术网

Javascript 根据提供的信息进行计算

Javascript 根据提供的信息进行计算,javascript,Javascript,我正在建立一个网站,我想做的基础上提供的信息计算。我显然需要在三个字段中的两个字段中提供信息来计算第三个字段的值 这三个字段是: 每加仑价格 买加仑 总销售额 很明显,我知道我可以用总销量除以每加仑价格来计算购买的汽油量 但是,我想根据输入的两个字段进行计算。我正试图找出最好的方法来做这件事 我知道这么多: 检查哪些字段为空 确定要进行的计算类型 以下是我到目前为止的情况: <form> <input type="number" id="totalSale" pla

我正在建立一个网站,我想做的基础上提供的信息计算。我显然需要在三个字段中的两个字段中提供信息来计算第三个字段的值

这三个字段是:

  • 每加仑价格
  • 买加仑
  • 总销售额
  • 很明显,我知道我可以用
    总销量
    除以
    每加仑价格
    来计算购买的汽油量

    但是,我想根据输入的两个字段进行计算。我正试图找出最好的方法来做这件事

    我知道这么多:

    • 检查哪些字段为空
    • 确定要进行的计算类型
    以下是我到目前为止的情况:

    <form>
        <input type="number" id="totalSale" placeholder="Total Sale Amount" class="calculate" />
        <input type="number" id="gallonPrice" placeholder="Price Per Gallon" class="calculate" />
        <input type="number" id="gallons" placeholder="Gallons" class="calculate" />
    </form>
    
    
    <script>
    var e = document.getElementsByClassName("calculate");
    
    function calc(){
       var sale_amt = document.getElementById("totalSale");
       var ppg = document.getElementById("gallonPrice");
       var gallons = document.getElementById("gallons");
       if (sale_amt || ppg !== null) {
           var calc_gallons = sale_amt.value / ppg.value;
           gallons.value = calc_gallons.toFixed(3);
       }
    }
    
    for (var i = 0; i < e.length; i++) {
        e[i].addEventListener('keyup', calc, false);
    }
    </script>
    
    
    var e=document.getElementsByClassName(“计算”);
    函数计算(){
    var sale_amt=document.getElementById(“totalSale”);
    var ppg=document.getElementById(“gallonPrice”);
    var加仑=document.getElementById(“加仑”);
    如果(销售金额| | ppg!==null){
    var calc_加仑=销售金额价值/ppg价值;
    加仑值=计算加仑数固定(3);
    }
    }
    对于(变量i=0;i
    逻辑应考虑当前输入的元素(即计算中的
    )。另外,你需要考虑当三个都有值时会发生什么,你改变一个。。。另外两个中哪一个应该改变

    看看这对你有用吗

    var sale_amt = document.getElementById("totalSale");
    var ppg = document.getElementById("gallonPrice");
    var gallons = document.getElementById("gallons");
    
    function calc(){
        var els = [sale_amt, ppg, gallons];
        var values = [sale_amt.value, ppg.value, gallons.value];
        var disabledElement = els.find(e=>e.disabled);
        var numValues = els.filter(e => e.value !== '' && !e.disabled).length;
        var calc_gallons = function() {
            gallons.value = (values[0] / values[1]).toFixed(3);
        };
        var calc_ppg = function() {
            ppg.value = (values[0] / values[2]).toFixed(3);
        };
        var calc_sale = function() {
            sale_amt.value = (values[1] * values[2]).toFixed(2);
        };
        if (numValues < 3) {
            if (numValues == 1 && disabledElement) {
                disabledElement.disabled = false;
                disabledElement.value = '';
                disabledElement = null;
            }
            els.forEach(e => e.disabled = e == disabledElement || (numValues == 2 && e.value === ''));
        }
        disabledElement = els.find(e=>e.disabled);
    
        switch((disabledElement && disabledElement.id) || '') {
        case 'totalSale': 
            calc_sale();
            break;
        case 'gallonPrice': 
            calc_ppg();
            break;
        case 'gallons':
            calc_gallons();
            break;
        }
    }
    
    var e = document.getElementsByClassName("calculate");
    for (var i = 0; i < e.length; i++) {
        e[i].addEventListener('keyup', calc, false);
        e[i].addEventListener('change', calc, false);
    }
    
    var sale\u amt=document.getElementById(“totalSale”);
    var ppg=document.getElementById(“gallonPrice”);
    var加仑=document.getElementById(“加仑”);
    函数计算(){
    var els=[销售金额,ppg,加仑];
    var值=[销售金额值、ppg值、加仑值];
    var disabledElement=els.find(e=>e.disabled);
    var numValues=els.filter(e=>e.value!=''&&!e.disabled).length;
    var calc_加仑=函数(){
    加仑值=(值[0]/值[1])固定(3);
    };
    var calc_ppg=函数(){
    ppg.value=(值[0]/值[2])toFixed(3);
    };
    var calc_sale=函数(){
    销售金额价值=(价值[1]*价值[2])固定(2);
    };
    如果(数值小于3){
    if(numValues==1&&disabledElement){
    disabledElement.disabled=false;
    disabledElement.value='';
    disabledElement=null;
    }
    els.forEach(e=>e.disabled=e==disabledElement | | |(numValues==2&&e.value===='');
    }
    disabledElement=els.find(e=>e.disabled);
    开关((disabledElement&&disabledElement.id)| |“”){
    “totalSale”案例:
    计算销售额();
    打破
    “加隆普莱斯”案:
    calc_ppg();
    打破
    案例“加仑”:
    计算加仑();
    打破
    }
    }
    var e=document.getElementsByClassName(“计算”);
    对于(变量i=0;i
    if(sale|amt | ppg!==null){
    oops-这根本不对,因为sale|amt将始终是“真实的”,因此无论输入了什么值和什么值,代码段都将运行。逻辑应考虑当前输入的元素(即calc中的
    this
    ).此外,你需要考虑当三个都有值时会发生什么,你改变一个…其他两个中的哪一个应该改变?…例如,如果你有加仑=10,ppg=5,那么销售金额将是50。你说你可以改变任何一个…那么如果你改变销售金额为60,会发生什么-其他两个元素中的哪一个需要改变?gallons->12或ppg->6?基本上,我只是想让用户更容易。他们可以输入他们想要添加的任何两条信息,而不必输入第三条。这些信息可能只输入一次,不应该更改。我在创建的一个提琴中包含了代码,而这并不是我想要的。。例如,当输入每加仑的价格时,它会自动随机计算一个值。我还没有完全评估代码,但我认为这是因为在声明变量时,您有
    gallons\u value=+ppg.value
    。也许这应该是
    gallons.value
    我感谢您的帮助和努力。您认为这是最有效的方法吗?我在想也许switch语句会更实用。它不是我真正需要的东西,只是我想要的东西,让我自己分心。
    gallons\u value=+ppg.value
    =我的一个输入错误逻辑不明确,尤其是当所有三个输入都有值,并且你改变了总的值时f其他两个应该改变?当改变ppg和加仑时,显然总数应该改变……看似复杂的代码是为了适应1、2或3个输入有值,而你正在改变其中一个,所有三个输入都不应该有值。目标是只输入两个值,并计算第三个值。