此IF条件有什么问题? 当我将EEID值设为123456时,它不应该进入这种情况。 但我看到它即将到来。 有人能让我知道我做错了什么吗?
if ((EEID.value.length != 6) || (EEID.value.length != 11)) {
alert(EEID.value.length); //This shows that the value length = 6
alert("Your Member ID must be a 6 digit or 11 digit number.");
EEID.focus();
return false;
}
答案 0 :(得分:11)
条件得到满足,因为EEID.value.length不是11.或者(||)允许!= 6或!= 11来满足if条件。
您需要将或(||)更改为an和(&&),如下所示:
if ((EEID.value.length != 6) && (EEID.value.length != 11)) {
alert(EEID.value.length);
alert("Your Member ID must be a 6 digit or 11 digit number.");
EEID.focus();
return false;
}
这样,只有当EEID.value.length不是6而不是11时才满足if条件。
答案 1 :(得分:1)
您最初拥有的内容(!P || !Q)
始终返回true,因为EEID.value.length
同时不能同时为6
和11
。当一个是假的,另一个是真的,反之亦然,因此它总是如此。
看看De Morgan's laws,或者更准确地说是
(!P && !Q) == !(P || Q)
与您所拥有的相似,但如果EEID.value.length
既不是6
或 11
,则说明条件为真。 (注意我更喜欢右侧,因为它只会否定一次。)所以,基本上,你可以写出像
if ((EEID.value.length != 6) && (EEID.value.length != 11)) {
或
if (!(EEID.value.length == 6 || EEID.value.length == 11)) {