2010-10-20 51 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