首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获得答案的结果并对该结果执行计算

如何获得答案的结果并对该结果执行计算
EN

Stack Overflow用户
提问于 2018-06-24 01:30:06
回答 1查看 33关注 0票数 0

Javascript代码:

function suma(){
        var sum1 = document.getElementById("sum1");
        var sum2 = document.getElementById("sum2");
        var input = document.getElementById("resultado");
        resultado = (sum1.value * sum2.value);
        input.value= resultado;
    }

如何对变量resultado中的答案执行1%的计算并将答案放入premium

我的代码如下:

function percentage(){
        var resultado = document.getElementById("resultado").value;
        var input = document.getElementById("premium");
        var premium = (0.01*resultado.value);
        input.value = premium;

    }

html代码

    <input type="number" class="form-control" required onblur="if(this.value 
     == ''){this.value='0'}" onKeyUp="suma();"  id="sum2"   name="Weight" 
    value="0" />
    <input type="text" class="form-control" onblur="if(this.value == '') 
    {this.value='0'}"  onKeyUp="suma();" id="sum1"    name="variable" 
    value="3.25" readonly="readonly" />
    <input  type="text" class="form-control" name="shipping_subtotal" 
    id="resultado" value="0" />
    <input type="number" class="form-control"  id="insurance" 
    name="insurance" onblur="if(this.value == ''){this.value='0'}"  
    name="variable" value="0.01" readonly="readonly" >
    <input type="number" class="form-control"  id="premium" name="premium" 
    value="0" onKeyUp "percentage();" >
EN

回答 1

Stack Overflow用户

发布于 2018-06-24 02:24:17

代码中有相当多的小错误。不过不用担心,它们在那里很容易被忽视。在开发时要记住的一件事是将您的关注点分开,因为您未来的自己和其他使用您的代码的开发人员将感谢您。在这种情况下,我所说的关注点分离是指逻辑与模板。HTML是模板的归属,而JavaScript是您的逻辑。当你编写像<input onblur="if(this.value == ''){this.value='0'}">这样的内联JavaScript时,它会使你的JavaScript很难理解和维护。在JavaScript文件中,您可以改为使用document.getElementById('demo').onblur = if(this.value == ''){this.value='0'};,现在可以在一个位置找到所有逻辑。就我个人而言,我更喜欢事件侦听器,因为与onblur不同的是,你可以为给定的事件分配多个函数,而且覆盖其他地方编写的任何函数的风险更小。

假设var el = document.getElementById('demo');

方法1:

el.onblur = if(this.value == ''){this.value='0'};

// This overwrites the onblur function from the line above
el.onblur = alert('hello');

方法二:

el.addEventListener('blur', function() { if(this.value == ''){this.value='0'} });

// This does not overwrite the function above,
// instead, it just adds another function to the event.
el.addEventListener('blur', function() { alert('hello'); });

抛开这个不谈,我相信你的代码会修复一些你的错误。为了帮助你,我写了一个替代你上面脚本的脚本。不过,我不确定我是否按您期望的方式得到了所有东西,所以请随意调整它,使其成为您自己的。

var sum1 = document.getElementById("sum1");
var sum2 = document.getElementById("sum2");
var resultado = document.getElementById("resultado");
var premium = document.getElementById("premium");
var insurance = document.getElementById("insurance");

function calculateFields() {
  var suma = (sum1.value * sum2.value);
  resultado.value = suma;
  premium.value = (0.01 * suma);
}

var inputs = [sum1, sum2, resultado, premium, insurance];
inputs.forEach(function(el) {
  el.addEventListener('blur', function() {
    this.value = this.value === '' ? 0 : this.value;
  });
  el.addEventListener('input', calculateFields);
});

弄乱jsfiddle上的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51003516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档