рассчитать несколько входных значений в JavaScript - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть 5 полей ввода (ползунки диапазона), и я пытаюсь вернуть результат при изменении любого из входных значений.Проблема «value4» используется в уравнении 2 раза, и это вызывает проблему.Если я изменю «значение4», мой результат не изменится.

      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 голосов
/ 14 ноября 2018

Код очень сложно прочитать. Я предлагаю сначала упростить код, сократив имена переменных. Затем нанесите 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;

}
0 голосов
/ 14 ноября 2018

Вот ваше уравнение

(
 (
  (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 входных значений, это обеспечивает обходной путь в вашей ситуации.Вы, кажется, не поняли этого, когда отправили свой вопрос.Возможно, вы поставили скобку или допустили ошибку в своих расчетах?

0 голосов
/ 14 ноября 2018

Ваше уравнение может быть упрощено, вы добавили слишком много скобок (я убрал функцию parseInt(), чтобы сделать ее более читабельной).

enter image description here

Это эквивалентно:

enter image description here

value4 отменено:

enter image description here

Возможно, вы допустили ошибку в своем уравнении.

...