2015-12-01 3 views
2

Я пишу простую программу javscript, а на кнопке отправки я вызываю функцию find_amount(), однако я продолжаю получать «ReferenceError: find_amount не определен». Что я делаю неправильно? Я пробовал несколько вещей, но не мог заставить его работать, хотя я пробовал этот метод несколько раз раньше, и он работал отлично.вызов Функция не работает

<form id="myForm"> 

    <strong>Loan: <input type="text" name="loan" id="loan" value="" size="10"></strong>&nbsp;&nbsp; 
    <select id="duration" onclick="onSelectChange(this)" style="width: 85px"> 
     <option value=" "></option> 
     <option value="three">3 years</option> 
     <option value="five">5 years</option> 
     <option value="six">6 years</option> 
    </select> &nbsp;&nbsp; 
    <strong>Interest: <input type="text" name="interest" id="interest" value="" size="10"></strong> 
    <button type="button" onclick="find_amount();">Submit</button></br></br> 
    <strong>Total amount to be returned: <input type="text" name="return" id="return" value="" size="10"></strong></br></br> 
    <strong>Installments</strong> 
    <select id="installments" onclick="onSelectChange(this)" style="width: 85px"> 
     <option value=" "></option> 
     <option value="year">per year</option> 
     <option value="month">per month</option> 
     <option value="week">per week</option> 
     <option value="day">per day</option> 
    </select> &nbsp;&nbsp;<strong>:</strong> 
    <span id="final"></span> 
</form> 

JavaScript:

function onSelectChange(combo) { 

    switch (combo.value) { 
     case "three": 
      { 
       document.getElementById("interest").value = " 3% "; 
       break; 
      } 
     case "five": 
      { 
       document.getElementById("interest").value = " 5% "; 
       break; 
      } 
     case "six": 
      { 
       document.getElementById("interest").value = " 6% "; 
       break; 
      } 

     case " ": 
      { 
       document.getElementById("interest").value = " "; 
       break; 
      } 

    } 
    function find_amount() { 
     var total; 
     var inter; 
     var lo; 

     lo = document.getElementById("loan").value; 
     inter = document.getElementById("interest").value; 
     total = (lo * inter)/100; 
     alert(total); 
     //document.getElementById("return").value = total; 
    } 
} 
+1

это простой вопрос обзорное .. 'find_amount' определяется в' onSelectChange' так не «виден» за пределами этой функции –

+0

кажется как '' 'отсутствует перед' find_amount' – blckbird

+1

@blckbird Не похоже, что '' 'отсутствует, так как вы можете видеть, что код не« сломан »... его просто то, что' find_amount' является вложенное под 'onSelectChange' –

ответ

1

Вы "не хватает" закрывающую скобку onSelectChange(combo) {... функции перед find_amount() {...}. Вы закрыли его после функции.

Так функция find_amount определяется/вложенной вonSelectChange(combo), вот почему он не виден в глобальном масштабе за пределами onSelectChange

Я отформатированный код с Visual Studio и редактировать на свой пост. Использование такого редактора помогает избежать таких ошибок.

Вот как это должно выглядеть следующим образом:

function onSelectChange(combo) { 

    switch (combo.value) { 
     case "three": 
      { 
       document.getElementById("interest").value = " 3% "; 
       break; 
      } 
     case "five": 
      { 
       document.getElementById("interest").value = " 5% "; 
       break; 
      } 
     case "six": 
      { 
       document.getElementById("interest").value = " 6% "; 
       break; 
      } 

     case " ": 
      { 
       document.getElementById("interest").value = " "; 
       break; 
      } 

    } 
} 

function find_amount() { 
    var total; 
    var inter; 
    var lo; 

    lo = document.getElementById("loan").value; 
    inter = document.getElementById("interest").value; 
    total = (lo * inter)/100; 
    alert(total); 
    //document.getElementById("return").value = total; 
} 
+0

Это не тот случай. Вы можете видеть, что обе функции закрыты должным образом ... это всего лишь вопрос обзора. функция 'find_amount' вложена в функцию' onSelectChange', а не находится за ее пределами. –

+0

@RonenCypis: Это то, что написано в моем ответе! – CoderPi

+0

* Вам не хватает закрывающей скобки ... *. Это не вопрос недостающего персонажа, потому что вы можете видеть, что у него есть это закрытие '}' ПОСЛЕ функции 'find_amount'. Опять-плохой дизайн, а НЕ пропавший характер. –

2

Ваша find_amount() функция определена в пределах вашей onSelectChange() функции, и не видно никому за пределами этой функции. Попробуйте разделить эти две функции, как так:

JS

function onSelectChange(combo) { 

    switch(combo.value) { 
     case "three" : 
     { 
      document.getElementById("interest").value = " 3% "; 
      break; 
     } 
     case "five" : 
     { 
      document.getElementById("interest").value = " 5% "; 
      break; 
     } 
     case "six" : 
     { 
      document.getElementById("interest").value = " 6% "; 
      break; 
     } 

     case " " : 
     { 
      document.getElementById("interest").value = " "; 
      break; 
     } 

    } 
} 
function find_amount(){ 
    var total; 
    var inter; 
    var lo; 

    lo = document.getElementById("loan").value; 
    inter = document.getElementById("interest").value; 
    total = (lo * inter)/100; 
    alert(total); 
    //document.getElementById("return").value = total; 
} 
Смежные вопросы