Javascript foreach(计算兴趣)

时间:2017-07-19 21:59:42

标签: javascript

我正在努力弄清楚被输入的价值观。

我要求原则率,百分率和年数。

我想找出他们的simpleInterest和compundInterest。

我希望它在表格中显示每年的结果值。

我有一张桌子,当我输入数量时会得到多少年,例如15.当我输入15时,它会显示15行,但它们都是相同的。

我需要它来计算每一行每年的价值。

我目前的代码只显示了15年的相同结果。

我的代码:

<div class="container">
<div id="content">
    <h2 class="interestOutput">Table for $<span id="interestPrinciple">Loading...</span> at <span id="interestRate">Loading...</span>%
    </h2>
    <table>
        <tr>
            <th>Year</th>
            <th>SimpleInterest</th>
            <th>CompoundInterest</th>
        </tr>
        <div id="tableResult">

        </div>
    </table>
</div>

<script type="text/javascript">
    if (document.readyState = "complete") {
        var principle = localStorage.getItem("principle");
        var rate = localStorage.getItem("rate");
        var years = localStorage.getItem("years");

        var simple_interest = principle * (rate / 100) * years;
        var compound_interest = principle * (1 + rate/100);

        /*
        var list = computeSchedule(p, rate, 12, y, monthlyPayment);
        var tables = "";
        for (var i = 0; i < list.length; i++) {
            tables += "<tr>" +
                "<td>" + list[i][0] + "</td>" +
                "<td>" + list[i][1] + "</td>" +
                "<td>" + list[i][2] + "</td>" +
                "<td>" + list[i][3] + "</td>" +
                "<td>" + list[i][4] + "</td>" +
                "</tr>";
        }
        document.getElementById("demo").innerHTML = '<table>' + tables + '</table>';
        */

        var tables = "";
        for (var i = 0; i < years; i++) {
            tables +=
                "<tr>" +
                "<td>" + years + "</td>" +
                "<td>" + simple_interest + "</td>" +
                "<td>" + compound_interest + "</td>"+
                "</tr>";
        }
        document.getElementById("tableResult").innerHTML = '<table>' + tables + '</table>';

        document.getElementById("interestPrinciple").innerHTML = principle;
        document.getElementById("interestRate").innerHTML = rate;
        //document.getElementById("gradeOutput").innerHTML = years;
    }
</script>

 I have now sorted the simple interest column but the compound column is not correct.

我收到了这些信息:The formula to compute simple interest is interest = principal * (rate/100) * years. Just add the principal to the interest to generate the amount to display. The formula to compute compound interest is FinalAmount = principal * (1 + rate/100)Years. Notice that you do not need to add the principal in this case. Your program must read the principal amount, rate (%), and the maximum number of years (see Web Site Snapshots/Video below). Use the following messages to read the appropriate values:

我的更新代码是:

<div class="container">
<div id="content">
<h2 class="interestOutput">Table for $<span id="interestPrinciple">Loading...</span> at <span id="interestRate">Loading...</span>%
        </h2>
        <div id="tableResult"></div>
    </div>
</div>

<script type="text/javascript">
    if (document.readyState = "complete") {
        var principle = localStorage.getItem("principle");
        var rate = localStorage.getItem("rate");
        var years = localStorage.getItem("years");
        var tables = "";
        for (var i = 0; i < years; i++) {

            var simple_interest = principle * (rate / 100) * i;
            var compound_interest = principle * (1 + (rate/100));

            var final_simple = compound_interest + simple_interest;
            var add_extra = 1 + (rate/100);
            var final_compound = final_simple + add_extra;

            tables +=
                "<tr>" +
                "<td>" + (i + 1) + "</td>" +
                "<td>$" + final_simple + "</td>" +
                "<td>$" + final_compound + "</td>"+
                "</tr>";
        }
        document.getElementById("tableResult").innerHTML = '<table><tr><th>Year</th><th>SimpleInterest</th><th>CompoundInterest</th></tr>' + tables + '</table>';

        document.getElementById("interestPrinciple").innerHTML = principle;
        document.getElementById("interestRate").innerHTML = rate;
    }
</script>

3 个答案:

答案 0 :(得分:1)

从我所看到的,多年来你的迭代没有任何关于调用解决问题的功能。您的变量会按原样声明一次,并且您可以在相同的数据年度内循环。

尝试这样的事情。

&#13;
&#13;
var tables, principle, years, rate, add_extra, times_compunded_per_tear, compound_rate, i;

principle = 10000;
years = 6;
rate = 5.6;
tables = '';
times_compounded_per_year = 12
compound_rate = 1 / times_compounded_per_year;

function simple_interest(currentYear) {

    return principle * (rate / 100) * currentYear + principle;

}

function compound_interest(currentYear) {
   
    return principle * (Math.pow(((1 + rate/100) / compound_rate), (compound_rate * currentYear)));

}

for (i = 0; i < years + 1; i++) {
  
  tables +=
    "<tr>" +
    "<td>Year: "+ i +"</td>" +
    "<td>Simple Interest "+ simple_interest(i).toFixed(2) + "</td>" +
    "<td>Compound Interest "+ compound_interest(i).toFixed(2) + "</td>" +
    "</tr>";
}
        document.getElementById("tableResult").innerHTML = '<table>' + tables + '</table>';

        document.getElementById("interestPrinciple").innerHTML = "Principle: "+principle;
        document.getElementById("interestRate").innerHTML = "Interest Rate: "+rate;
        //document.getElementById("gradeOutput").innerHTML = years;
&#13;
<ul>
    <li id="interestPrinciple"></li>
    <li id="interestRate"></li>
</ul>
<div id="tableResult"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

一次又一次地做同样的事情总会给你相同的结果。为了更改结果,您需要在代码中的某处使用索引。

为什么所有的评论,清理你的代码,提出一个精确的问题,你会得到一个精确的答案。

答案 2 :(得分:0)

您需要计算for循环内部的兴趣,否则您每次都只是回收相同的变量而从不更新它。

for (var i = 0; i < years; i++) {
    var simple_interest = principle * (rate / 100) * i;
    var compound_interest = principle * (1 + rate/100);
        tables +=
            "<tr>" +
            "<td>" + (i + 1) + "</td>" +
            "<td>" + simple_interest + "</td>" +
            "<td>" + compound_interest + "</td>"+
            "</tr>";
    }

此外,compound_interest也需要使用索引。