计算JavaScript中的多个输入值

时间:2018-11-14 10:19:59

标签: javascript math calculation

我有5个输入字段(范围滑块),当任何输入值更改时,我都试图返回结果。 问题是“ value4”在等式中使用了2次,这引起了问题。如果我更改“ value4”,我的结果不会改变。

      function output(){
      var value1 = document.getElementById('NumberOfEmployees_input').value;
      var value2 = document.getElementById('AverageSalary_input').value;
      var value3 = document.getElementById('AverageTime_input').value;
      var value4 = document.getElementById('WorkdaysWeek_input').value;
      var value5 = document.getElementById('AccountingHours_input').value;

      document.getElementById('saving').innerHTML =
          (((parseInt(value1) * parseInt(value2))/(parseInt(value4) * parseInt(1920))) * (parseInt(value3) * parseInt(value4) * parseInt(48)))
          + (parseInt(value5) * parseInt(13500)) - parseInt(183600);
  }

有人可以给我一个提示吗? 谢谢!

3 个答案:

答案 0 :(得分:2)

您的方程式可以简化,您添加了太多括号(我删除了parseInt()函数以使其更具可读性)。

enter image description here

等效于:

enter image description here

value4已取消:

enter image description here

您的公式可能有误。

答案 1 :(得分:1)

该代码很难阅读。我建议首先简化代码,缩短变量名。然后尽早应用parseInt,以减少之后的混乱情况。 另外,由于parseInt(123)已经是整数,因此无需123

function output(){
  var v1 = parseInt(document.getElementById('NumberOfEmployees_input').value);
  var v2 = parseInt(document.getElementById('AverageSalary_input').value);
  var v3 = parseInt(document.getElementById('AverageTime_input').value);
  var v4 = parseInt(document.getElementById('WorkdaysWeek_input').value);
  var v5 = parseInt(document.getElementById('AccountingHours_input').value);

  var n = v1 * v2;  // nominator
  var d = v4 * 1920 * v3 * v4 * 48;  // denominator

  document.getElementById('saving').innerHTML = (n/d) + (v5 * 13500) - 183600;

}

答案 2 :(得分:1)

这是你的方程式

(
 (
  (parseInt(value1) * parseInt(value2))
   /
  (parseInt(value4) * parseInt(1920))
 ) *
 (parseInt(value3) * parseInt(value4) * parseInt(48))
)
+ (parseInt(value5) * parseInt(13500))
- parseInt(183600);

   v1 • v2
(-----------  • v3 • v4 • 48) + (v5 • 13500) - 183600
  v4 • 1920

//  valueN has been substituted with vN

通过观察,v4抵消了。

这将您的数学链减少为

( (parseInt(value1)*parseInt(value2)*parseInt(value3)*48) / 1920 )
    + (parseInt(value5) * 13500)
    - 183600;

请注意,最初v4 = 0会失败。


为使代码更具可读性,您可以这样分隔分子和分母

n = parseInt(value1) * parseInt(value2) * parseInt(value3) * 48
document.getElementById('saving').innerHTML = (n/1920) + (v5 * 13500) - 183600;

尽管这可能无法回答您使用2个输入值的问题,但这可以根据您的情况提供解决方法。当您发布问题时,您似乎没有意识到这一点。也许您放错了括号或在计算中出错了?