2016-06-02 10 views
0

Wenn ich den folgenden Code in Chrome ausführen, sagt es mir, dass calculate nicht definiert ist. Der Code soll ein Kredit-Rechner sein.Javascript Loan Calculator

<!--DOCTYPE html--> 
    <form name="loandata"> 
    <table> 
     <tr><td colspan=3><h1><b>Enter Loan Information</b></h1></td></tr> 
     <tr> 
      <td>1)</td> 
      <td>Amount of the loan (any currency):</td> 
      <td><input type=text name=principal size=12 onChange="calculate()"></td> 
     </tr> 
    </tr> 
     <tr> 
      <td>2)</td> 
      <td>Annual percentage rate of interest</td> 
      <td><input type=text name=interest size=12 onChange="calculate()"></td> 
     </tr> 
    </tr> 
     <tr> 
      <td>3)</td> 
      <td>Repayment period in years:</td> 
      <td><input type=text name=years size=12 onChange="calculate()"></td> 
     </tr> 
    </tr> 
    <tr><td colspan=3> 
     <h1><b> 
      <input type=button value="Compute" onClick="calculate()"> 
      Payment Information 
     </h1></b> 
    </td></tr> 
    <tr> 
     <td>4)</td> 
     <td>Your monthly payment:</td> 
     <td><input type=text name=total interest size=12></td> 
    </tr> 
    </table> 
    </form> 
    <script type="text/javascript"> 
    function calculate(){ 
     var principal= document.loandata.principal.value; //Get the input principal amount 
     var interest = document.loandata.interest.value/100/12; //Get the input interest amnount 
     var payments= document.loandata.years.value*12; //get the number of years to payback the loan 
     var y =math.pow(1+ interest, payments); 
     var monthly = (principal*y*interest)/(y-1); 
     if(!isNaN(monthly) && 
      (monthly 1= Number.POSITIVE_INFINITY)&& 
      (monthly != Number.NEGATIVE_INFINITY){ 
       document.loandata.payment.value =round(monthly); 
        document.loandata.total.value= round(monthly*payments); 
        document.loandata.totalinterest.value= 
        round(*(monthly*payments)-principal); 
       } 
      } 
      function round(y){ 
       return Math.round(y*100)/100; 
      } 
    </script> 
+0

Holen Sie sich den Skriptabschnitt zum Anfang der Seite. – Oshadha

+0

Ich habe es versucht, es hat nicht funktioniert: L – James

+1

@Hearner: das ist kein sehr guter Rat, da das Laden von CSS/JS das HTML-Rendering blockiert. Die beste Vorgehensweise besteht also darin, das JS auf den Boden zu legen. Auf diese Weise wird der HTML-Code gerendert, bevor der JS geladen wird. – Pimmol

Antwort

4

es mir sagt, dass berechnen nicht

definiert Es tut, aber vor, dass es sagt Ihnen:

Uncaught SyntaxError: Unexpected number 

Deal mit dem ersten Fehler zuerst. Fehler führen zu weiteren Fehlern.

monthly 1= Number.POSITIVE_INFINITY)&& 

Sie verfehlten Ihre Shift-Taste und tippte 1 statt !. Dieser Syntaxfehler verhindert, dass die Funktionsdeklaration erfolgreich ausgewertet wird, weshalb die Funktion beim Aufruf nicht existiert.

0

Sie haben eine Reihe von Syntaxfehlern, das ist Ihr einziges Problem. math.pow sollte Math.pow sein, 1 = sollte! = sein, und Sie haben Probleme mit Klammern, die nicht übereinstimmen.

function calculate(){ 
    var principal = document.loandata.principal.value; //Get the input principal amount 
    var interest = document.loandata.interest.value/100/12; //Get the input interest amnount 
    var payments = document.loandata.years.value*12; //get the number of years to payback the loan 
    var y = Math.pow(1+ interest, payments); 
    var monthly = (principal*y*interest)/(y-1); 
    if(!isNaN(monthly) && monthly !== Number.POSITIVE_INFINITY && monthly !== Number.NEGATIVE_INFINITY){ 
    document.loandata.payment.value = round(monthly); 
    document.loandata.total.value = round(monthly*payments); 
    document.loandata.totalinterest.value = round((monthly * payments) - principal); 
    } 
} 

Sie sollten einen Linter wie jshint abholen. Es wird helfen, Ihre Syntax in Schach zu halten.

Verwandte Themen