此代码出了什么问题:
if (Gender != "M" || Gender != "F")
{
alert("Please enter gender." + Gender);
document.getElementById("gender").focus();
return false;
}
答案 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,则询问用户性别。
编辑:更正了我的反转结果。