2009-10-28 95 views
2

有什麼不對的代碼:問題的邏輯或

if (Gender != "M" || Gender != "F") 
{ 
    alert("Please enter gender." + Gender); 
    document.getElementById("gender").focus(); 
    return false;        
} 

回答

13

你可能意味着and,而不是or

if (Gender != "M" && Gender != "F") 
+0

我在DropDown中使用,所以我的意思是OR。 – RKh

+0

那麼,如果你使用OR,那麼這個語句將總是返回true。爲什麼有這個聲明呢? – Kai

+2

凱是對的。您的測試將始終如此,因爲如果用戶選擇性別= M,則Gender!=「F」部分爲true。 – Janusz

5

條件將永遠是正確的,因爲如果Gender == 'M'那麼這將是!= 'F'和反之亦然。

2

如果您使用的是下拉列表,我們假設您有3個值,例如:空字符串「M」和「F」。

在這種情況下,我會檢查空字符串,以簡化的邏輯問題:

if (Gender == "") 
{ 
    alert("Please enter gender." + Gender); 
    document.getElementById("gender").focus();  
    return false;                

}

1

你的條件,如寫的,始終是真實的

如果性別是「 M「,那麼(Gender!=」F「)是真的。

如果Gender爲「F」,則(Gender!=「M」)爲真。因此,如果Gender爲「M」或「F」,則(Gender!=「M」|| Gender!=「F」)爲真,這意味着您的代碼塊將始終執行

@凱是正確的 - 你想邏輯。在英文中,你想問:

如果性別不是M而性別不是F,那麼詢問用戶的性別。

編輯:糾正了我的逆轉結果。

+2

除非帖子已被編輯,否則我相信你的意思是真實的,而不是假的。 – Pops

+1

...除了條件總是*真*。 ;-) –

+0

@主:由於代碼行格式不正確,我進行了編輯。 – RKh

6

它讀成:

if (gender is not male OR gender is not female) 
{ 
    // 
} 

比方說,性別是男:因爲性別不是女性,if評估爲true

現在如果性別是女性:因爲它不是男性,所以if再次評估爲true

你打算說如果性別既不是男性也不是女性,對吧?正如其他人所建議的,你必須在這裏使用AND。

if (gender is not male AND gender is not female) 

//which is 
if (Gender != "M" && Gender != "F") 
+1

+1對於很好的解釋。 – anddoutoi