迷失在javascript比较中

时间:2014-11-06 10:37:38

标签: javascript jquery comparison elements

当我的body元素没有获得以下任何类时,我正在编写要执行的脚本:

  

a OR b OR c AND d

我尝试了这个,但它似乎没有做到这一点:

if ((!$('body').hasClass('a')) || (!$('body').hasClass('b')) || ((!($('body').hasClass('c')) && (!$('body').hasClass('d'))))) {

}

更新

这似乎有效:

if (!($('body').hasClass('a') || $('body').hasClass('b') || $('body').hasClass('c') && $('body').hasClass('d'))) {

}

2 个答案:

答案 0 :(得分:0)

您正在寻找没有任何课程的正文,因此您需要使用&&。继承人会发生什么:

if(hasclass(a) || hasclass(b)) = if(true OR false) = if(true)

在OR运算符||之上意味着一旦它达到真正的评估,它将执行你的if - 阻止。

if(hasclass(a) && hasclass(b)) = if(true AND false) = if(false)

此处AND运算符&&表示一旦您点击false评估,您就会阻止执行。

你希望最后一件事发生,因为你希望它没有这两个类。了解如何与这些操作员一起玩,因为他们可能会非常困惑。只要你记得AND运算符只有在所有语句都为真时才执行,而OR运算符只在其中一个语句为真时执行。嵌套运算符的工作方式相同,因此如果a,b和c相同,则执行if((a = b && b = c) || (a = c))时a和c相同,但a和b相同或a和c相同时不执行。< / p>

更多关于表达式和运算符(特别是Bitwise和必读):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators

答案 1 :(得分:0)

使用

$(function(){
   if ((!$('body').hasClass('a')) || (!$('body').hasClass('b')) || !($('body').hasClass('c') && $('body').hasClass('d'))) {

}

});