Javascript Loop - Добавление переменной var к условию while? - PullRequest
0 голосов
/ 23 ноября 2018

По сути, я хочу посчитать и отобразить количество месяцев, которое потребуется для достижения определенной точки (сберегательного баланса) на основе взноса каждый месяц.

Вот что у меня есть:

function howLong(initial,interest,goal,added){
    var initialDeposit = parseInt(initial);
    var interestInt = parseInt(interest);
    var targetSaving = parseInt(goal);
    var contribution = parseInt(added);
    var monthCount = 0;
    while(initialDeposit <= targetSaving){
        monthCount++;
        initialDeposit+contribution
    }
    alert(monthCount)
}

Вот моя HTML-форма:

<form>
Initial Deposit:<br />
<input type="number" id="initial"><br /><br />
Interest:<br />
<input type="number" id="interest"><br /><br />
Target savings amount:<br />
<input type="number" id="goal"><br /><br />
Monthly Contribution:<br />
<input type="number" id="contribution"><br /><br />
<input type="button" value="How Long!?" onclick="howLong(document.getElementById('initial').value,document.getElementById('interest').value,document.getElementById('goal').value),document.getElementById('contribution').value">
</form>

Ответы [ 4 ]

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

Как уже указывали другие ответы, initialDeposit += contribution решит проблему, но вам здесь вообще не нужен цикл:

var monthCount = Math.ceil((targetSaving - initialDeposit)/contribution);

Это предполагает, что вклад, конечно, постоянен.

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

Изменить на initialDeposit += contribution;

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

Вы пропустили += оператор и интерес, а также.

function howLong(){
    var initialDeposit = parseInt(document.getElementById('initial').value);
    var interestInt = parseInt(document.getElementById('interest').value);
    var targetSaving = parseInt(document.getElementById('goal').value);
    var contribution = parseInt(document.getElementById('contribution').value);
    var monthCount = 0;
    while(initialDeposit <= targetSaving){
        monthCount++;
        initialDeposit += contribution + interestInt; //+= was missing and interestInt as well
    }
    alert(monthCount);
}
<form>
Initial Deposit:<br />
<input type="number" id="initial"><br /><br />
Interest:<br />
<input type="number" id="interest"><br /><br />
Target savings amount:<br />
<input type="number" id="goal"><br /><br />
Monthly Contribution:<br />
<input type="number" id="contribution"><br /><br />
<input type="button" value="How Long!?" onclick="howLong()">
</form>
0 голосов
/ 23 ноября 2018

Вам необходимо добавить значение contribution к initialDeposit.

initialDeposit += contribution;

Для другой проблемы у вас есть ошибка при вызове функции

document.getElementById('goal').value),document.getElementById('contribution').value"
                                     ^ >>>>>>>>>>>>>>>> should go >>>>>>>>>>>>>>>>> ^

shold be

onclick="howLong(
    document.getElementById('initial').value,
    document.getElementById('interest').value,
    document.getElementById('goal').value,
    document.getElementById('contribution').value
)"

Последняя круглая скобка закрывается рано.

function howLong(initial, interest, goal, added) {
  var initialDeposit = parseInt(initial);
  var interestInt = parseInt(interest);
  var targetSaving = parseInt(goal);
  var contribution = parseInt(added);
  var monthCount = 0;
  while (initialDeposit <= targetSaving) {
    monthCount++;
    initialDeposit += contribution;
  }
  alert(monthCount)
}
<form>
  Initial Deposit:<br />
  <input type="number" id="initial"><br /><br /> Interest:
  <br />
  <input type="number" id="interest"><br /><br /> Target savings amount:<br />
  <input type="number" id="goal"><br /><br /> Monthly Contribution:<br />
  <input type="number" id="contribution"><br /><br />
  <input type="button" value="How Long!?" onclick="howLong(document.getElementById('initial').value,document.getElementById('interest').value,document.getElementById('goal').value,document.getElementById('contribution').value)">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...