Javascript 使用if..else语句基于年龄计算点数,脚本仅显示第一个值

Javascript 使用if..else语句基于年龄计算点数,脚本仅显示第一个值,javascript,html,forms,if-statement,Javascript,Html,Forms,If Statement,我希望有JavaScript经验的人能看完这个脚本,告诉我我做错了什么,这个脚本的应用程序可以在。 第一个脚本showAge()应该从出生日期获取年龄,然后用结果填充txt字段“age”。第二个脚本将解析“age”字段并检查结果是否符合任何条件(如if..else语句所示),然后根据if..else语句用点填充两个字段(rsltf和rsltq)。但现在它只输出10和16(两个if..else if语句的第一个值),而不考虑年龄。我真的搞不懂:/ <html xmlns="http://ww

我希望有JavaScript经验的人能看完这个脚本,告诉我我做错了什么,这个脚本的应用程序可以在。 第一个脚本showAge()应该从出生日期获取年龄,然后用结果填充txt字段“age”。第二个脚本将解析“age”字段并检查结果是否符合任何条件(如if..else语句所示),然后根据if..else语句用点填充两个字段(rsltf和rsltq)。但现在它只输出10和16(两个if..else if语句的第一个值),而不考虑年龄。我真的搞不懂:/

<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>
<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 age = today.getFullYear() - bday.getFullYear();  
if(today.getMonth() < bday.getMonth() || (today.getMonth() == bday.getMonth() && today.getDate() < bday.getDate()))  
{
     t = age--;  
}
else {
t = age
}
form.age.value = t; 
} 
</script> 
<script type="text/javascript">
function compute(form)
{
var a = parseInt(form.age.value, 10) || 0; 
if (21 <= a <= 49){
    f = 10;
}
else if (20 == a == 50){
    f = 8;
}
else if (19 == a == 51){
    f = 6;
}
else if (18 == a == 52){
    f = 4;
}
else if (17 == a == 53){
    f = 2;
}
else if (17 > a > 53){
    f = 0;
}
form.rsltf.value = f;
if (18 <= a <= 35){
    q = 16;
}
else if (a == 36){
    q = 14;
}
else if (a == 37){
    q = 12;
}
else if (a == 38){
    q = 10;
}
else if (a == 39){
    q = 8;
}
else if (a == 40){
    q = 6;
}
else if (a == 41){
    q = 4;
}
else if (a == 42){
    q = 2;
}
else if (18 > a > 43){
    q = 0;
}
form.rsltq.value = q;   
}
</script>
</head>
<body>
<form name="form">
<p>Your Date of Birth (format:<strong>dd/mm/yyyy</strong>)</p><br />
<input onBlur="compute(this.form)" onchange="showAge()" name="dob" id="dob" />
<p>Your Age</p><input name="age" type="text" style="font-size: 15px" value="" size="7" readonly>
<h1>Your education</h1>

<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>
</body>
</html>

魁北克和联邦移民积分计算器
函数showAge(){
var d=document.getElementById('dob').value.split('/');
var today=新日期();
var bday=新日期(d[2],d[1],d[0]);
var age=today.getFullYear()-bday.getFullYear();
如果(today.getMonth()dd/mm/yyyy)


你的年龄

你的教育


您不能在javascript中执行此操作:
21您不能在javascript中执行此操作:
21此代码根本无法工作:

function compute(form)
{
var a = parseInt(form.age.value, 10) || 0; 
if (21 <= a <= 49){
    f = 10;
}
else if (20 == a == 50){
    f = 8;
}
else if (19 == a == 51){
    f = 6;
}
else if (18 == a == 52){
    f = 4;
}
else if (17 == a == 53){
    f = 2;
}
else if (17 > a > 53){
    f = 0;
}

它应该做什么?

此代码根本不起作用:

function compute(form)
{
var a = parseInt(form.age.value, 10) || 0; 
if (21 <= a <= 49){
    f = 10;
}
else if (20 == a == 50){
    f = 8;
}
else if (19 == a == 51){
    f = 6;
}
else if (18 == a == 52){
    f = 4;
}
else if (17 == a == 53){
    f = 2;
}
else if (17 > a > 53){
    f = 0;
}

它应该做什么?

什么是
18>a>43
17>a>53
条件?a不能同时小于18和大于43。这些条件永远不会成立。那么,它们为什么会出现呢?同样地,
20==a==50
在逻辑上是不可能的(甚至忽略JavaScript语法问题)。
18>a>43
17>a>53
的条件是什么?a不能同时小于18和大于43。这些条件永远不会成立。那么,它们为什么会出现呢?类似地,逻辑上不可能出现
20==a==50
(即使忽略JavaScript语法问题)。17==a==53表示如果a是17或53,那么肯定不起作用。您需要这样做:
(a==17)|(a==53)
。如果a是17或53,则支持17==a==53表示肯定不起作用。您需要这样做:
(a==17)| |(a==53)
(21 <= a) && (a <= 49)
17 == a == 53