Javascript 逻辑OR问题

Javascript 逻辑OR问题,javascript,Javascript,此代码有什么问题: if (Gender != "M" || Gender != "F") { alert("Please enter gender." + Gender); document.getElementById("gender").focus(); return false; } 你的意思可能是和,而不是或: if (Gender != "M" && Gender != "F

此代码有什么问题:

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

你的意思可能是
,而不是

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

该条件将始终为true,因为如果
性别=='M'
,则该条件将为
!='F'
,反之亦然。

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

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

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

}

您的条件,如所写,总是正确的

如果性别为“M”,则(性别!=“F”)为真

如果性别为“F”,则(性别!=“M”)为真

因此,如果Gender是“M”或“F”,那么(Gender!=“M”| | Gender!=“F”)为真,这意味着您的代码块将始终执行

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

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

编辑:更正了我颠倒的结果。

读作:

if (gender is not male OR gender is not female)
{
  //
}
假设性别是男性:因为性别不是女性,
if
的计算结果为
true

现在,如果性别是女性:因为它不是男性,
if
再次计算为
true

你的意思是说性别既不是男性也不是女性,对吗?正如其他人所建议的,您必须在此处使用和

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

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

我在下拉列表中使用了OR,所以我的意思是OR。如果你使用了OR,那么这个语句将始终返回true。为什么要有这种说法?凯是对的。您的测试将始终正确,因为性别!=如果用户选择性别=M,则“F”部分为真。问题在于逻辑,而不是逻辑OR;)除非这篇文章被编辑过,否则我相信你的意思是真的,不是假的……只是条件总是真的@洛德:因为代码行的格式不正确,所以我编辑了。@LordTorgamus和@dtsazza-谢谢你在否决票到来之前发现了这一点。我改正了我的错误。这就是我匆忙回答的结果。