Farhan Ishraq
Farhan Ishraq

Reputation: 25

Uncaught ReferenceError: calculateTotal is not defined

After clicking calculate button, its not showing the return value rather showing this error: "Uncaught ReferenceError: calculateTotal is not defined". I am very new to JavaScript. Please help.

HTML:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>2</title>
        <meta charset="utf-8"/>
        <script type="text/javascript" src="2.js"></script>
    </head>
    <body>
        <div id="page">
        <div id="header">
            <h1> 02 </h1>
        </div>
        <div id="body">
            <p>You probably want to retire someday so let's get started!</p>
                <form name="retirement savings" action="#" OnClick="calculateTotal(amountNeeded.value, investNo, annContribute,inrate)">
                    How much money do you need to retire: <input type="text" name="savingsGoal"><br><br>
                    Initial Investment: <input type="text" name="initialInvestment"><br><br>
                    Annual Contribution: <input type="text" name="annualContribution"><br><br>
                    Expected Interest Rate: Select from the following please:<br><br>
                        <input type="radio" name="interestRate" value="1percent">1 Percent<br>
                        <input type="radio" name="interestRate" value="1.5percent">1.5 Percent<br>
                        <input type="radio" name="interestRate" value="2percent">2 Percent<br>
                        <input type="radio" name="interestRate" value="2.5percent">2.5 Percent<br>
                        <input type="radio" name="interestRate" value="3percent">3 Percent<br>
                        <input type="radio" name="interestRate" value="3.5percent">3.5 Percent<br>
                        <input type="radio" name="interestRate" value="4percent">4 Percent<br>
                        <input type="radio" name="interestRate" value="4.5percent">4.5 Percent<br>
                        <input type="radio" name="interestRate" value="5percent">5 Percent<br>
                        <input type="radio" name="interestRate" value="5.5percent">5.5 Percent<br>
                        <input type="radio" name="interestRate" value="6percent">6 Percent<br>
                        <input type="radio" name="interestRate" value="6.5percent">6.5 Percent<br><br>
                        <input type="button" onClick="calculateTotal(savingsGoal.value, initialInvestment, annualContribution,interestRate);" value="Calculate">  <input type="reset">
                </form>
                <br>
                <hr>
                <p>You can retire in years</p>
                <p>with in the bank</p>
                <hr>                
        </div>
        <div id="footer"><br>
        <a href="../index.html">Return to Main Menu</li>
        </div>
    </body>
</html>

JS:

/*Interest Radio Button*/
var interest_rate= new Array();
interest_rate["1percent"]=1;
interest_rate["1.5percent"]=1.5;
interest_rate["2percent"]=2;
interest_rate["2.5percent"]=2.5;
interest_rate["3percent"]=3;
interest_rate["3.5percent"]=3.5;
interest_rate["4percent"]=4;
interest_rate["4.5percent"]=4.5;
interest_rate["5percent"]=5;
interest_rate["5.5percent"]=5.5;
interest_rate["6percent"]=6;
interest_rate["6.5percent"]=6.5;


function getIntrestRate() {
    var interestRadio = document.getElementsByName('interestRate');

    for (i=0; i < interestRadio.length; i++) {
        if (interestRadio[i].checked) {
            user_input = interestRadio[i].value;
        }
    }

    return interest_rate[user_input];
}

/*Calculation*/

function calculateTotal(savingsGoal.value, initialInvestment.value, annualContribution.value, interstRate.value)(){
 if ((document.calc.savingsGoal.value == null || document.calc.savingsGoal.length == 0) ||
     (document.calc.initialInvestment.value == null || document.calc.initialInvestment.length == 0)||
     (document.calc.annualContribution.value == null || document.calc.rate.annualContribution.length == 0)){
     alert("Please fill in required fields");
     return false;
}

 else
 {
 var amount = document.calc.savingsGoal.value;
 var invest  = document.calc.initialInvestment.value;
 var yearly   = document.calc.annualContribution.value / 1200;
 var interest_rate= document.calc.getInterestRate.value;
 document.calc.pay.value = amount * interest_rate / (1 - (1/(1 + intr), yearly)));
 }
}

Upvotes: 1

Views: 3011

Answers (3)

Guruprasad J Rao
Guruprasad J Rao

Reputation: 29683

Your function has invalid definition. You have extra () after parameters inside ()

function calculateTotal(savingsGoal.value, initialInvestment.value,
annualContribution.value, interstRate.value)(){
                                          //^^remove this

Update

Few points I just noted which stays invalid in your case. So just go through the code shown in this fiddle. I've updated both html and js. I've changed the logic of getting values to function.. Its a parameter less function now. Also getIntrestRate() is a function and you were trying to access it as a variable/element and the way you were calling it was wrong. There is a spelling mistake i.e. getInterestRate. Just go through the fiddle and please note that its not fully functional. Not sure what you are getting in intr variable at the end.

Upvotes: 3

Vadivel S
Vadivel S

Reputation: 660

I think You Not Include Jquery Library file so you include jquery library file on header its working

https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js

or search latest version jquery library file include .

Upvotes: 0

gurvinder372
gurvinder372

Reputation: 68363

calculateTotal function is not defined properly because there is a syntax error in its signature.

make it

function calculateTotal(savingsGoal, initialInvestment, annualContribution, interstRate){

you can't access a property of an object here while defining a method.

Also there is an extra parenthesis ().

Upvotes: 1

Related Questions