逻辑OR的问题

时间:2009-10-28 13:48:39

标签: javascript

此代码出了什么问题:

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

5 个答案:

答案 0 :(得分:13)

您可能代表and而不是or

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

答案 1 :(得分: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")

答案 2 :(得分:5)

条件始终为真,因为如果Gender == 'M'则为!= 'F',反之亦然。

答案 3 :(得分:2)

如果您使用的是下拉列表,我们假设您有3个值,例如:空字符串,“M”和“F”。

在这种情况下,我会检查空字符串以简化逻辑问题:

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

}

答案 4 :(得分:1)

您的条件,如所写,始终是真的

如果Gender为“M”,则(Gender!=“F”)为真。

如果Gender为“F”,则(Gender!=“M”)为真。

因此,如果Gender为“M”或“F”,则(Gender!=“M”|| Gender!=“F”)为true,表示您的代码块始终执行。

@Kai是对的 - 你想要逻辑。用英语,你想问:

如果性别不是M且性别不是F,则询问用户性别。

编辑:更正了我的反转结果。