簡體   English   中英

JavaScript,不打印

[英]JavaScript, not printing

我正在使用一個基本貸款攤銷功能,該功能在使用“提示”獲取輸入時有效。 從那到使用表單,有些事情是不正確的。 我正在嘗試獲取同一張表以打印到div區域,但目前無法獲取。 我敢肯定這只是我的菜鳥的眼睛,但我看不出我錯在哪兒。

感謝您抽出寶貴時間來幫助籌款。

HTML-

 <!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Loan Amortization</title>
<script type="text/javascript" src="LoanAmortization.js"></script>
</head>

<body>
    <h1>Loan Amortization</h1>


    <fieldset>
        <legend>Inputs</legend>
        <form>
            Principal: <input type="text" id="principalInput" /><br />
            Interest:  <input type="text" id="interestInput" /><br />
            Terms:     <select id="termsInput">     

                    <option>12 months</option>
                    <option>24 months</option>
                    <option>36 months</option>
                    <option>48 months</option>
                    <option>60 months</option>
            </select> <br />
            <input type="button" id="myButton" value="Click this!" 
            onclick="amort('principalInput','interestInput','termsInput', 
            'myDiv')" />
        </form>
    </fieldset>


    <fieldset>
        <legend>Outputs</legend>

    <div id="myDiv">


    </div>  
    </fieldset>

</body>

JS-

    function amort(principalInput, interestInput, termsInput)
{
    total = parseInt(document.getElementById(principalInput).value);
    var monthlyRate = parseFloat
    (document.getByElementId(interestInput).value)/12;
    var payment = total * (monthlyRate/(1-Math.pow(
        1+monthlyRate, -terms)));

    var result = "Loan amount: $" + principalInput.toFixed(2) +  "<br />" + 
        "Interest rate: " + (interestInput*100).toFixed(2) +  "%<br />" +
        "Number of months: " + termsInput + "<br />" +
        "Monthly payment: $" + payment.toFixed(2) + "<br />" +
        "Total paid: $" + (payment * terms).toFixed(2) + "<br /><br />";

    result += "<table border='1'><tr><th>Month</th><th>Balance</th>" + 
        "<th>Interest</th><th>Principal</th>";

    // insert your code here
    var i = 1;

    var interestPaid = (total * monthlyRate);
    var principalPaid = payment - interestPaid;

    while(i <= terms){
        result+= "<tr><td>" + i + "</td>";
        result+= "<td>" + total.toFixed(2) + "</td>";
        result+= "<td>" + interestPaid.toFixed(2) + "</td>";
        result+= "<td>" + principalPaid.toFixed(2)  + "</td>";
        result+= "</tr>";
        total = total - principalPaid;
        interestPaid = total * monthlyRate;
        principalPaid = payment - interestPaid;
        i++;
    }

    result += "</table>";
    document.getElementById('myDiv').innerHTML = result;
}

首先,您要使用四個參數調用amort函數:

onclick="amort('principalInput','interestInput','termsInput','myDiv')"

但這僅定義為接受三個:

function amort(principalInput, interestInput, termsInput)

在函數定義中添加第四個參數,然后在函數中使用該參數,而不是對輸出div名稱進行硬編碼。

接下來,在使用terms之前未對其進行定義。 您需要添加一行,從表單輸入中對其進行解析。 您需要將value屬性添加到HTML表單中的option標簽中,以便您可以閱讀許多術語。 有關該語法外觀的示例,請參見<select>的MDN頁面。

principalInput不是數字時,您還要調用principalInput.toFixed(2) 您在代碼前面的那個字段中讀取了一個值。 我認為您的意思是改用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM