如果在Javascript条件下这有什么问题?

时间:2012-12-19 17:45:15

标签: javascript if-statement

此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;
      }

2 个答案:

答案 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同时不能同时为611。当一个是假的,另一个是真的,反之亦然,因此它总是如此。

看看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)) {