【问题标题】:Javascript Loop - Adding a var to the while condition?Javascript循环 - 向while条件添加一个var?
【发布时间】:2018-11-23 12:11:22
【问题描述】:

基本上,我想根据每个月的供款计算并显示达到某个点(储蓄余额)所需的月数。

这是我目前所拥有的:

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>

【问题讨论】:

  • 那么问题是什么?
  • initialDeposit += contributioninitialDeposit = initialDeposit + contribution

标签: javascript loops while-loop


【解决方案1】:

您需要将contribution 的值添加到initialDeposit

initialDeposit += contribution;

另外一个问题,你的函数调用有错误

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

坚持

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>

【讨论】:

  • 这一定是我的表单有问题,这只会给我 monthCount = 1 并在警报中显示(使用值 initialDeposit = 1000,targetSaving = 1500,contribution = 50)。
  • @Kyle:这里写着11jsfiddle.net/jgf0xh7o。如果你摆脱循环(like this,你会得到 10,这实际上是正确的答案(你应该有&lt;,而不是&lt;=)。
  • @Groo 哦,我明白了,所以我猜这绝对是我的表格?
  • 正确。它是函数,它的右括号要提前并省略added 参数。
  • @Kyle:请注意&lt;= 是错误的,你根本不需要循环。
【解决方案2】:

更改为initialDeposit += contribution;

【讨论】:

    【解决方案3】:

    正如其他答案指出的那样,initialDeposit += contribution 将解决问题,但您根本不需要循环:

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

    当然,这是假设贡献是恒定的。

    【讨论】:

      【解决方案4】:

      您还缺少+= 运算符和兴趣。

      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>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-08
        • 1970-01-01
        • 2018-04-16
        • 2016-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-06
        相关资源
        最近更新 更多