2016-06-02 3 views
0

Когда я запускаю следующий код в Chrome, он сообщает мне, что calculate не определен. Код предназначен для калькуляции кредита.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

Получить раздел сценария вверху страницы. – Oshadha

+0

Я пробовал это, это не сработало: L – James

+1

@Hearner: это не очень хороший совет, так как загрузка CSS/JS блокирует рендеринг HTML. Поэтому лучше всего поставить JS на дно. Таким образом, HTML получает визуализацию до загрузки JS – Pimmol

ответ

4

он говорит мне, что вычисления не определен

Он делает, но до того, что он говорит вам:

Uncaught SyntaxError: Unexpected number 

Сделка с первой ошибкой первым. Ошибки приводят к дальнейшим ошибкам.

monthly 1= Number.POSITIVE_INFINITY)&& 

Вы пропустили смены ключа и напечатал 1 вместо !. Эта синтаксическая ошибка предотвращает успешное оценивание объявления функции, поэтому функция не существует, когда вы пытаетесь ее вызвать.

0

У вас есть ряд синтаксических ошибок, это ваша единственная проблема. math.pow должно быть Math.pow, 1 = должно быть! =, и у вас есть некоторые проблемы с совпадающими скобками.

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); 
    } 
} 

Вы должны подобрать linter как jshint. Это поможет сохранить ваш синтаксис под контролем.