2016-01-31 2 views
1

Пытается создать простой калькулятор возраста. На данный момент будет текущий год, но когда вы введете свой год рождения и нажмите submit ничего не происходит.HTML-форма не отправляется на JavaScript

function aaa(){ 
 
    date=new Date(); 
 
    var y=date.getFullYear(); 
 
    document.getElementById('ddd').value=y; 
 
} 
 

 
function display(){ 
 
    var c=document.getElementById('eee').getFullYear.value; 
 
    //var aa= document.getElementById('eee').(this).('getDate').value; 
 
    var e= y - c; 
 
    { 
 
     document.write("Ans="+e); 
 
    } 
 
    alret(e); 
 
}
<body onload="aaa();"> 
 
    <form name="xyz" method="post"> 
 
     CurrentDate:<input type="text" name="ddd" id="ddd"> 
 
     BirthDate:<input type="date" name="eee" id="eee"> 
 
     Age:<input type="text" name="age" id="age"> 
 
     <input type="submit" name="submit" value="submit" onClick="display();"> 
 
    </form> 
 
</body>

+1

* «вы можете иметь в гугле» * - Вы шутите, правильно ? – jonrsharpe

+0

от «google» я имел в виду «посмотри» извините за путаницу! – elenorshelby1

+0

необходимо предотвратить отправку формы или она всегда будет перезагружать страницу – charlietfl

ответ

0

Вероятно, лучше для просмотра кода, но здесь идет:

<script language="javascript"> 

атрибут языка для элементов сценария осуждался в HTML 4 и удаляется в HTML5. Убери это.

function aaa() 

Функции должны иметь значащее имя, например. комплектYear.

{ 
    date=new Date(); 

Вы должны держать локальные переменные с вар.

var y=date.getFullYear(); 

    document.getElementById('ddd').value=y; 

Вы только могли бы сделать:

document.getElementById('ddd').value = new Date().getFullYear(); 

} 
function display() 
{ 
    var c=document.getElementById('eee').getFullYear.value; 

ввода даты тип не поддерживается всеми браузерами, и что не будет работать в любом случае. Если вы просто используете разницу в годах (что будет неверно на 1 год примерно в половине случаев), то почему бы просто не попросить год?

var e= y - c; 
    { 
     document.write("Ans="+e); 
    } 

Блока является избыточным, и вызов document.write после события нагрузки сначала очистить весь документ (все, включая все скрипты) и загрузить новый документ только с содержанием переданного документа. напишите.

[...]

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

function calcAge(element) { 
 
    var form = element.form; 
 
    form.age.value = form.currentYear.value - form.birthYear.value; 
 
} 
 

 
window.onload = function() { 
 
    document.forms[0].currentYear.value = new Date().getFullYear(); 
 
}
<form> 
 
    Current year: <input name="currentYear"><br> 
 
    Birth year: <input name="birthYear"><br> 
 
    <input type="button" onclick="calcAge(this)" value="Caluclate age"><br> 
 
    Your age: <input name="age" readonly><br> 
 
</form>

Обратите внимание, что каждый элемент управления в форме имеет вид свойство, ссылающееся форма, в которой она находится. Кроме того, формы управления с именем доступны как именованные свойства формы (следовательно, элемент управления с именем submit перезаписывает метод отправки).

0
  • document.getElementById('eee') является элементом DOM.
  • document.getElementById('eee').getFullYear есть, судя по вашему коду, undefined.
  • document.getElementById('eee').getFullYear.value следует выбросить ошибку.

Вы пытались прочитать свойство объекта, который (к сожалению) undefined, поэтому ваш код не работает.Откройте консоль и посмотреть, если есть красная линия, говоря что-то вроде этого:

Не удается прочитать свойство «значение» неопределенной

Смежные вопросы