Javascript 尝试从DOB中导出年龄,然后使用if..else语句计算点
我试图用一个脚本从DOB推导出用户的年龄,然后根据这个年龄为联邦(f)和魁北克(q)移民局的两个地区给他们打分,因为他们都计算年龄点。我有一组if…else命令来打分,并在两个文本框中显示。 当前用于计算点parseInt的脚本位于显示年龄的文本字段中(此字段由dobtoage脚本填充) 这是我的密码和密码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
魁北克和联邦移民积分计算器
您的出生日期(格式: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;