2010-10-20 56 views
0

我正在使用将从当前日期检查年龄的脚本以及通过年份输入的非常简单的逻辑。下面是代码:年龄范围脚本有什么错误?

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Date Check</title> 
<script language="javascript" type="text/javascript"> 
function check() 
{ 
    var curtime = new Date; 
    var curyear = curtime.getFullYear(); 
    var inpyear = document.getElementById('txtdate').value; 
    if(inpyear.length == 4) 
    { 
     var result = curyear - inpyear; 
     if(result >= 18 || result <= 100) 
     { 
      alert('Welcome'); 
     } 
     else 
     { 
      alert('Your Too Much Old or Young to see the Site'); 
     } 
    } 
    else 
    { 
     alert('Please Put the 4 Digit Year Example : 1987'); 
    } 

} 
</script> 
</head> 

<body> 
Enter Year: <input type="text" id="txtdate" /> 
<input type="button" onclick="check();" value="Check" /> 
</body> 
</html> 

的问题是,如果我进入甚至1999年是未满18岁,但它仍然是给受欢迎的消息,但它不应该如此的,如果因为我允许的范围从18的条件-100。是否有任何类型错误或错误是什么?

回答

2
if(result >= 18 && result <= 100) 
    { 
     alert('Welcome'); 
    } 

result >= 18 || result <= 100永远是正确的。

+0

它将永远是'真正的'...除非'结果'的值是'NaN'。 (这可能看起来很奇怪,但它也是一个“Number”值)。 'typeof NaN =='number'' :) – CMS 2010-10-20 07:03:12

+0

@CMS:ya。但为了实现这一点,'inpyear'必须是'NaN',在这种情况下,外部'if'将失败。 :) – 2010-10-20 07:10:31

+0

感谢很多我错过了一个小逻辑:“> !! – Seeker 2010-10-20 07:15:27

1

result >= 18 || result <100将始终为真。你必须使用&&

+0

谢谢你是大声笑我错了,我错过了一个小逻辑:D – Seeker 2010-10-20 06:51:04