2014-10-30 2 views
-1

Я кодирую калькулятор в Javascript, который показывает, сколько времени займет кто-то, чтобы стать миллионером, вычислив следующие факторы: Ежемесячный депозит и возврат инвестиций. Чтобы понять это, мне нужен график амортизации, чтобы проценты были добавлены на сбережения каждый месяц. См код:Javascript Millionaire Calculator Loop

<!doctype html> 
<html> 
<head> 
<script> 
function computeMillion(){ 
    var deposit = document.getElementById('deposit').value; 
    var interest = document.getElementById('return').value; 
    var amount = document.getElementById('amount').value; 

    for(var i = 0; i < 5; i++) 
     { 
      interestPayment = deposit * interest; 
      principalPayment = deposit - interestPayment; 
      principal -= principalPayment; 
     } 
    var months = amount/principal; 
    document.getElementById('months').innerHTML = "Months to Millionaire ="+months;  

} 
</script> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<p>Amount Desired: £<input id="amount" type="number" value="1000000" onChange="computeMillion()"></p> 
<p>Monthly Deposit: £<input id="deposit" type="number" onChange="computeMillion()"></p> 
<p>Return on Investment: <input id="interest" type="number" onChange="computeMillion()">%</p> 

<h2 id="months"></h2> 

</body> 
</html> 

Так что если депозит в размере £ 50 было сделано первоначально, после первого месяца экономия должна быть £ 52,50 из-за интереса 5%, что пользователь будет вход, в следующем месяце еще £ 50 будет сохранено, что означает, что на счете есть 102.50 фунтов стерлингов, а затем добавляется интерес к тому, который равен 107,62 и т. Д.

Может ли кто-нибудь увидеть код, который не работает? Я могу указать требуемые суммы, но я не вижу никаких результатов.

Может ли кто-нибудь помочь?

Благодаря

+3

'for (i = 0; i <5; bank ++)' ??? почему 'bank ++'? не 'i ++'? – l2aelba

ответ

2

Как я (...

Почему bank++ при использовании i?

for(i = 0; i < 5; bank++) 

Try:

for(var i = 0; i < 5; i++) 

или что-то вроде ..

HTML:

<p>Amount Desired: £<input id="amount" type="number" value="1000000" onkeyup="computeMillion()"></p> 
<p>Monthly Deposit: £<input id="deposit" type="number" onkeyup="computeMillion()"></p> 
<p>Return on Investment:<input id="interest" type="number" onkeyup="computeMillion()">%</p> 
<h2 id="months"></h2> 

JS:

function computeMillion() { 
    var deposit = document.getElementById('deposit').value || 0; 
    var interest = document.getElementById('interest').value || 0; 
    var amount = document.getElementById('amount').value || 0; 
    var principal; 
    // var principal = 0; 
    for (var i = 0; i < 5; i++) { 
     interestPayment = deposit * interest; 
     principalPayment = deposit - interestPayment; 
     principal = principalPayment; 
     // principal -= principalPayment; 
    } 
    var months = amount/principal; 
    document.getElementById('months').innerHTML = "Months to Millionaire =" + months; 
} 

Демо: http://jsfiddle.net/xkr5cky4/

+0

Спасибо за ваш комментарий, у меня есть исправленный код, который не имел никакого эффекта. – user3768948

+0

Ничего себе! Благодаря! По крайней мере, сейчас он показывает результаты. Я думаю, что моя математика может ошибочно вычислить ее. Вот как мне хотелось бы работать, забыв о стилизации http://www.thisismoney.co.uk/money/saving/article-1633423/Millionaire-calculator-How-long-make-1m-How-regular- save-make-rich.html – user3768948

1

для (я = 0; я < 5; банк ++)

изменение

для (я = 0; я < 5; я ++)

0

Я считаю, что переменная принцип должен быть определен вне из для постановки на результаты, чтобы показать.

Также я бы рекомендовал цикл, а не условие, которое ждет, пока ваше значение будет равно или больше 1 миллиметра, а затем отобразите месяцы.

+0

Не могли бы вы уточнить? – user3768948