5

这个 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;
      }
4

2 回答 2

11

满足条件是因为 EEID.value.length 不是 11。 or (||) 允许 != 6 或 != 11 满足 if 条件。

您需要将 or (||) 更改为 and (&&),如下所示:

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 条件。

于 2012-12-19T17:47:38.283 回答
1

您最初拥有的 ,(!P || !Q)始终返回 true,因为EEID.value.length不能同时两者6兼而有之11。当一个为假时,另一个为真,反之亦然,因此它始终为真。

看看德摩根定律,或者更准确地说

(!P && !Q) == !(P || Q)

这与您所拥有的类似,但如果EEID.value.length既不是6 or 11 ,则表明条件为真。(请注意,我更喜欢右侧,因为它只否定一次。)所以,基本上,你可以写你的条件,如

if ((EEID.value.length != 6) && (EEID.value.length != 11)) {

或者

if (!(EEID.value.length == 6 || EEID.value.length == 11)) {
于 2012-12-19T17:55:09.947 回答