Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试从DOB中导出年龄,然后使用if..else语句计算点_Javascript_Html_Date_Parseint - Fatal编程技术网

Javascript 尝试从DOB中导出年龄,然后使用if..else语句计算点

Javascript 尝试从DOB中导出年龄,然后使用if..else语句计算点,javascript,html,date,parseint,Javascript,Html,Date,Parseint,我试图用一个脚本从DOB推导出用户的年龄,然后根据这个年龄为联邦(f)和魁北克(q)移民局的两个地区给他们打分,因为他们都计算年龄点。我有一组if…else命令来打分,并在两个文本框中显示。 当前用于计算点parseInt的脚本位于显示年龄的文本字段中(此字段由dobtoage脚本填充) 这是我的密码和密码 魁北克和联邦移民积分计算器 您的出生日期(格式:dd/mm/yyyy) 你的年龄 函数showAge(){ var d=document.getElementById('dob').v

我试图用一个脚本从DOB推导出用户的年龄,然后根据这个年龄为联邦(f)和魁北克(q)移民局的两个地区给他们打分,因为他们都计算年龄点。我有一组if…else命令来打分,并在两个文本框中显示。 当前用于计算点parseInt的脚本位于显示年龄的文本字段中(此字段由dobtoage脚本填充) 这是我的密码和密码


魁北克和联邦移民积分计算器
您的出生日期(格式:dd/mm/yyyy


你的年龄



函数showAge(){ var d=document.getElementById('dob').value.split('/'); var today=新日期(); var bday=新日期(d[2],d[1],d[0]); var by=bday.getFullYear(); var bm=bday.getMonth()-1; var bd=bday.getDate(); var年龄=0;var dif=b天; 而(dif a>53) { f=0;q=0; } 如果(a==19),则为else { f=6;q=16; } 如果(a==51),则为else { f=6;q=0; } 如果(a==18),则为else { f=4;q=16; } 如果(a==20),则为else { f=8;q=16; } 否则,如果(a==50) { f=8;q=0; } 如果(a==52),则为else { f=4;q=0; } 否则如果(35>=a>=21) { f=10;q=16; } 如果(a==36),则为else { f=10;q=14; } 如果(a==37),则为else { f=10;q=12; } 如果(a==38),则为else { f=10;q=10; } 如果(a==39),则为else { f=10;q=8; } 如果(a==40),则为else { f=10;q=6; } 如果(a==41),则为else { f=10;q=4; } 如果(a==42),则为else { f=10;q=2; } 如果(a==43),则为else { f=10;q=0; } 否则,如果(50>=a>=44) { f=10;q=0; } form.rsltf.value=f; form.rsltq.value=q; }
首先,你的年龄计算很奇怪

这样做:

var today = new Date(); 
var bday = new Date(d[2],d[1],d[0]);
var age = today.getFullYear() - bday.getFullYear();  //If you're born in 1980 then 2011-1980 means you're about 31 years old, this will give you the age if birthday has already passed

if(today.getMonth() < bday.getMonth() || (today.getMonth() == bday.getMonth() && today.getDate() < bday.getDate()))  
{
     age--;  //Reduce age by 1 if birthday hasn't passed
}

我的问题是为什么它不起作用。我将研究switch case语句,并决定使用您的代码来实现ShowAge()函数,谢谢。@原子花花公子还需要在ShowAge()末尾的表单上使用getElementById来更新年龄值。我刚刚添加了一个示例。另外,我发布的age代码中似乎有一些轻微的逻辑错误,使它比应该的值低了一年。我不认为需要getElementbyId,因为它会自动计算表单的名称(它是),并且您的代码可以很好地工作,只需稍微调整一下,再次感谢:这是明智的做法。在我在FireFox中将其更改为使用getElementById(使用Firebug实时更改)之前,无法让它为我更改年龄字段。此外,如果你在这个脚本继续的页面上有多个表单呢?
var today = new Date(); 
var bday = new Date(d[2],d[1],d[0]);
var age = today.getFullYear() - bday.getFullYear();  //If you're born in 1980 then 2011-1980 means you're about 31 years old, this will give you the age if birthday has already passed

if(today.getMonth() < bday.getMonth() || (today.getMonth() == bday.getMonth() && today.getDate() < bday.getDate()))  
{
     age--;  //Reduce age by 1 if birthday hasn't passed
}
document.getElementById('formid').age.value = age;