使用逻辑OR运算符在if语句中进行多次比较在JavaScript中不起作用

时间:2014-06-23 10:54:09

标签: javascript

我正在检查以下方式,但它不起作用。当我使用单一陈述时,它正在发挥作用。即(NodeName!==“Active”)

   function ClientCandidateMenuNodeClicked(sender, eventArgs) {
        var node = eventArgs.get_node();
        var NodeName=node.get_text();
        if( (NodeName !== "Active") || (NodeName !== "Recently Added") || (NodeName !== "Added") )
         {   
           if (NodeName != null)
           {
              alert(NodeName);
           }
        }
          node.toggle();
    }

3 个答案:

答案 0 :(得分:5)

你的逻辑错了。如果NodeName的值为"Recently Added",则发生的第一件事是与"Active"的比较,其评估为true(因为它们不相同)。因为第一个条件的计算结果为true,所以整个条件都被认为是真的,并且alert被执行了。

你需要将你的“ors”改为“ands”(注意我也删除了所有这些括号......你在这里不需要它们):

if (NodeName !== "Active" && NodeName !== "Recently Added" && NodeName !== "Added") {
    // Do stuff
}

答案 1 :(得分:1)

NodeName 始终不是“活动”或不是“最近活动”或不是“已添加”。你想用

if (NodeName !== "Active" && NodeName !== "Recently Added" && NodeName !== "Added" && NodeName != null) {
    alert(NodeName);
}

if (!(NodeName === "Active" || NodeName === "Recently Added" || NodeName === "Added") && NodeName != null) {
    alert(NodeName);
}

答案 2 :(得分:-1)

试试这个

if( NodeName !== "Active" || NodeName !== "Recently Added" || NodeName !== "Added" ) {   
  alert(NodeName);
}