Javascript 而操作员不';我不能在三种情况下工作

Javascript 而操作员不';我不能在三种情况下工作,javascript,operators,Javascript,Operators,&&运算符在我的if语句中的3个条件下不工作。它在两种条件下工作 这是有效的(在两种情况下) 但在三种情况下有什么问题 if($("[name='menu[]']:checked").val() == 1 && $("[name='menu[]']:checked").length < 2) { alert('if first menu is checked, you have to check at least one other menu als

&&
运算符在我的
if
语句中的3个条件下不工作。它在两种条件下工作

这是有效的(在两种情况下)

但在三种情况下有什么问题

if($("[name='menu[]']:checked").val() == 1 && $("[name='menu[]']:checked").length < 2) {        
    alert('if first menu is checked, you have to check at least one other menu also');    
    return false;
}
if ($("[name='menu[]']:checked").val() == 2 && $("[name^='submenu']:checked").length == 0) {
    alert('You have to select submenu with second menu');        
    return false;
}
if($("[name='menu[]']:checked").val() == 1&2 && $("[name='menu[]']:checked").length < 2 && $("[name^='submenu']:checked").length == 0) {        
    alert('You are selecting first and second menu, but missed submenu of second menu');        
    return false;
}
if($(“[name='menu[]']:checked”).val()==1&2&&$(“[name='menu[]']:checked”).length<2&$(“[name^='submenu']:checked”).length==0{
警报(“您正在选择第一个和第二个菜单,但错过了第二个菜单的子菜单”);
返回false;
}

如果我在最后一个条件之前添加
|
而不是
&&
操作符,它会工作。但是
操作员不满足项目要求,
是强制性的

为了更好地说明对原始问题所作的评论,我在这里对其进行了细分。(注意,第一条语句已更改为嵌套OR语句,因为变量永远不会同时为1和2)

if(
(
$(“[name='menu[]”:选中”).val()==1 ||
$(“[name='menu[]”:选中”).val()==2
) && 
$(“[name='menu[]']:选中”)。长度<2&&
$(“[name^='submenu']:选中”)。长度==0
) {        
警报(“您正在选择第一个和第二个菜单,但错过了第二个菜单的子菜单”);
返回false;

}
==1和2
是无效语法。你需要把这些支票分开。但是,您似乎正在检查元素的值是否同时为
1
2
,这显然是不可能的。我想你可能需要一个或一个条件来代替。还请注意,
val()
返回一个字符串,但您将其与整数进行比较。它将通过类型强制来工作,但不是最佳实践。
&&
不是jQuery运算符。正如Rory在评论中强调的,代码中的语法不正确。但是,即使您通过使用两个介于
&&
之间的检查来更正它,您的代码仍然无法工作,因为值不能同时为1和2。
==1和2
甚至没有意义。一个值不能等于两个不同的值。@Rorymcrossan,但为什么它在两个条件下工作。如果我删除了最后一个条件,'==1&2'有效,因为如上所述,
==1&2
对于比较多个值来说是无效的语法。
&
运算符是按位AND运算符。在这种情况下,它输出
0
,因此这可能是条件工作的原因;它相当于
el.val()==0