尝试从DOB导出年龄,然后计算点,使用if.其他语句
Trying to derive Age from DOB, and then calculate points, using if..else statements
我试图使用脚本从DOB中导出用户年龄,然后根据这个年龄奖励他们联邦(f)和魁北克(q)移民两个领域的积分,因为它们都计算年龄点,我有一组if…Else命令来奖励积分并将其显示在两个文本框中。当前用于计算点数的脚本parseInt是显示年龄的文本字段(该字段由dobtoage脚本填充)这是我的代码和一个实时预览。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Quebec and Federal Immigration Points Calculator</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
</head>
<body>
<form name="form">
<p>Your Date of Birth (format:<strong>dd/mm/yyyy</strong>)</p><br />
<input onmouseout="showAge()" name="dob" id="dob" />
<p>Your Age</p><input name="age" type="text" style="font-size: 15px" value="" size="7" readonly>
<INPUT NAME="calc" VALUE="Calculate" TYPE="button" onClick="compute(this.form)"><br />
<input name="rsltf" type="text" style="font-size: 50px" value="" size="20" readonly /><br />
<input name="rsltq" type="text" style="font-size: 50px" value="" size="20" readonly />
</form>
<script type="text/javascript">
function showAge(){
var d =document.getElementById('dob').value.split('/');
var today=new Date();
var bday=new Date(d[2],d[1],d[0]);
var by=bday.getFullYear();
var bm=bday.getMonth()-1;
var bd=bday.getDate();
var age=0; var dif=bday;
while(dif<=today){
var dif = new Date(by+age,bm,bd);
age++;
}
age +=-2 ;
form.age.value = age;
}
</script>
<script type="text/javascript">
function compute(form)
{
var a = parseInt(form.age.value, 10) || 0;
if (a == 17)
{
f = 2; q = 0;
}
else if (a == 53)
{
f = 2; q = 0;
}
else if (17 > a > 53)
{
f = 0; q = 0;
}
else if (a == 19)
{
f = 6; q = 16;
}
else if (a == 51)
{
f = 6; q = 0;
}
else if (a == 18)
{
f = 4; q = 16;
}
else if (a == 20)
{
f = 8; q = 16;
}
else if (a == 50)
{
f = 8; q = 0;
}
else if (a == 52)
{
f = 4; q = 0;
}
else if (35 >= a >= 21)
{
f = 10; q = 16;
}
else if (a == 36)
{
f = 10; q = 14;
}
else if (a == 37)
{
f = 10; q = 12;
}
else if (a == 38)
{
f = 10; q = 10;
}
else if (a == 39)
{
f = 10; q = 8;
}
else if (a == 40)
{
f = 10; q = 6;
}
else if (a == 41)
{
f = 10; q = 4;
}
else if (a == 42)
{
f = 10; q = 2;
}
else if (a == 43)
{
f = 10; q = 0;
}
else if (50 >= a >= 44)
{
f = 10; q = 0;
}
form.rsltf.value = f;
form.rsltq.value = q;
}
</script>
</body>
</html>
首先,你计算年龄的方式很奇怪。
这样做:
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
}
对于巨大的if else结构,首先我将把它分成两个独立的结构。这允许您利用其中一个中的范围,而另一个中不可用,以缩短整体结构。年龄范围是如此混乱,我真的不想从中挑选出合适的结构。可能需要利用switch case语句,而不是if/elseif/else。
同时,把你的函数放在它们所属的位置。此外,您还需要对ShowAge()函数进行一些错误检查,以防它不是一个有效的日期。此外,您需要在表单的id上使用getElementById
来更改它在ShowAge()
中的值,否则它不知道form
是什么。因此,给您的表单一个id,并将ShowAge()
的结尾更改为:
document.getElementById('formid').age.value = age;
相关文章:
- JQuery/JavaScript:遍历表单字段,执行计算,然后提交
- 如何计算一个函数在javascript中运行的次数?然后在页面上显示
- 计算具有特定类的元素的数量,然后添加对它们进行编号的ID
- 其中是在ReactJS中放置一个值的最佳位置,该值由传入的初始参数计算一次,然后再也不会更改
- Javascript计算脚本,用于计算表单输入值,然后另存为page2.php的隐藏输入
- 如何获取html标签的计算样式值,然后将值设置为“样式”
- Jquery 在单击时移动元素,直到达到计算的边距,然后停止
- Node.js:在数组元素中赋值,然后计算分数
- javascript拆分数组-进行计算-然后再次合并
- Javascript:首先计算元素的数量,然后编写所需变量的确切数量
- 计算分页,然后删除内容
- 尝试从DOB导出年龄,然后计算点,使用if.其他语句
- 试图在jQuery中计算金额,然后将其插入HTML
标签
- 如何在数组中添加值,然后输出到计算函数
- 高度:自动计算错误,如果元素隐藏时dom加载,然后显示
- Javascript:计算剩余时间(然后租金)的租赁(租金计算器)
- Jquery-从分隔字符串创建一个数组,然后计算其值
- 计算选定项目的成本,然后计算总成本
- 如何在html中保存用户响应,然后将其保存在他们的计算机上,以便他们下次可以看到它
- 计算然后更改表单字段值