HTML表单不会在JavaScript中提交

时间:2016-01-31 22:35:48

标签: javascript html

尝试创建一个简单的年龄计算器。目前当前年度将会填充,但是当您输入出生年份并点击提交时,没有任何反应。



deep

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




2 个答案:

答案 0 :(得分:0)

代码审查可能更好,但这里有:

<script language="javascript">

脚本元素的语言属性在HTML 4中已弃用,在HTML5中已删除。删除它。

function aaa()

函数应该有一个有意义的名称,例如 setYear

{
    date=new Date();

您应该使用 var 保持变量本地。

    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;

所有浏览器都不支持输入类型日期,但无论如何都无法使用。如果您只是使用年份差异(大约一半时间不正确,那么为什么不只是要求年份?)

    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>

请注意,表单中的每个控件都有一个 form 属性,该属性引用它所在的表单。此外,带有名称的表单控件可用作表单的命名属性(因此名为提交会覆盖提交方法。

答案 1 :(得分:0)

  • document.getElementById('eee')是一个DOM元素。
  • document.getElementById('eee').getFullYear,根据您的代码,undefined
  • document.getElementById('eee').getFullYear.value应该抛出错误。

您试图从(不幸的)undefined对象中读取属性,这就是您的代码不起作用的原因。打开控制台,看看是否有红线说这样的话:

  

无法读取未定义的属性“值”