2014-12-11 5 views
-4
<html> 

<body> 

    <p>Enter names in the fields, then click "Submit" to submit the form:</p> 


    <form name="form"> 

    <input type="text" id="birthDate"> 

    <br> Current Date 

    <br> 

    <input type="text" id="currentDate"> 

    <br> 

    <br> 

    <br> 

    <a id="Submit_Button" onclick="test();" href="javascript:void(0);" title="Submit">Submit</a> 

    </form> 
    <script> 
    function test() { 


     var birthDate = document.getElementById("birthDate"); 

     var currentDate = document.getElementById("currentDate"); 




     var ageDate = birthDate.value - currentDate.value; 


     function ageD(ageDate) { 
     if (ageDate < 1) { 
      return function calculate(y) { 
      Math.abs(ageDate) = y 
      } 
     } else { 
      return function calculate(y) { 
      ageDate = y 
      } 
     } 
     } 
     var ageDale = ageD(); 
     var x = ageDale(ageDate); 



     alert(x) 
    } 
    </script> 

</body> 

</html> 

Я не могу исправить это. Я постоянно становлюсь неопределенным для x, вероятно, что-то простое, но я ценю помощь.Javascript не работает правильно

Возможно, это связано с моими функциями, потому что я действительно не знал, что делаю, когда настраиваю их.

+3

'' не работает' - не очень хорошее описание проблемы, вы вообще не получаете никаких предупреждений или просто предупреждаете 'undefined'? – adeneo

+0

Я просто получаю предупреждение, определенное, и на консоли ничего не происходит. –

+1

. Вы ничего не возвращаете из функций 'calculate'. – TheDude

ответ

0

Функция AgeDale не определена. Вам нужно вызвать функцию, а не переменную ageDale

+0

' var ageDale = ageD(); 'в то время как именовано интересно, присваивается возвращаемое значение вызова 'ageD', который является функцией. Это позволяет использовать ageDale (ageDate); ', потому что вы вызываете возвращаемую функцию. В этом аспекте вышеприведенного кода нет ничего плохого. Проблема, как отмечают другие, заключается в том, что возвращаемая функция не возвращает значение, и в результате неопределенное предупреждение. –

1

Я не уверен, что я вполне понимаю вашу логику, но функции, возвращаемые ageD, должны, в свою очередь, вернуть некоторое значение, поскольку вы явно ожидаете, что они что-то :

var x = ageDale(ageDate); 

в настоящее время эти функции calculate ничего не возвращающей, так x является undefined. Похоже, вы хотите что-то вроде этого:

function ageD(ageDate) { 
    if (ageDate < 1) { 
     return function calculate(y) { 
      return Math.abs(ageDate); 
     } 
    } else { 
     return function calculate(y) { 
      return y; 
     } 
    } 
} 
0

функция ageD() ожидает один параметр, и вы ничего не проходит, поэтому функция всегда возвращается в else заявление.

Вы asigning к x переменного возвращения этой функции, но она не возвращает ничего

0

Если вы просто пытаетесь получить возраст пользователя, вы могли бы их ввести в год такие, как 1990 и 2014 и это:

function test() { 
    var birthDate = document.getElementById("birthDate"); 
    var currentDate = document.getElementById("currentDate"); 
    var ageDate = currentDate.value - birthDate.value; 
    function ageD(ageDate) { 
    if (ageDate < 1) { 
     return function calculate(y) { 
     Math.abs(ageDate) = y 
     } 
    } else { 
     return ageDate 
    } 
    } 
    var ageDale = ageD(); 
    var x = ageDate; 
    alert(x) 
} 

в противном случае, если вы хотите, чтобы ввести даты как дд/мм/гггг вы должны что-то другое.

0
function test() { 
    // convert the input into intiger 
    var birthDate = parseInt(document.getElementById("birthDate").value, 10); 
    var currentDate = parseInt(document.getElementById("currentDate").value, 10); 
    var ageDate = birthDate - currentDate; 

    function ageD(ageDate) { 
    return Math.abs(ageDate); 
    } 
    var x = ageD(ageDate); 
    alert(x); 
} 
Смежные вопросы