如果声明同时使用&&和||运营商

时间:2018-01-30 19:19:46

标签: javascript jquery if-statement

我知道这已经讨论过了很多。我很确定我使用了正确的运算符优先级,但仍然没有得到理想的结果。

在下面的代码中,我试图查看正文是否具有“行业”类,如果window.location.href等于||运算符分隔的任何路径。如果“行业”类存在且window.location.href不等于列出的任何路径,那么我想更改位置。

当我进入路径时,发生了什么 http://blahblah.com/#leisure 它仍在执行if语句中的代码并将位置更改为https://blahblah.com/#consumer

我有一种感觉,我的解释是错综复杂的。遗憾。

var indDescObj = {
    aec: "Connecting with <br> customers who build",
    b2b: "Connecting <br> business to business",
    consumer: "Connecting <br> with shoppers <br> everywhere they buy",
    leisure: "Connecting with <br> customers when <br> they're at play"
}
    var $indDescription = $('.industry-description');
    var $indNavLinks = $('.industry-nav__link');

    $(document).ready(function() {
        var path = 'http://blahblah.com/'
        if ( $('body').hasClass('industries') &&
                        ( (window.location.href !== path + '#consumer') ||
                        (window.location.href !== path + '#b2b') ||
		    (window.location.href !== path + '#leisure') ||
		    (window.location.href !== path +'#aec') )
                        ) {
            $(".industry-nav__link[data-filter='.consumer']").click();
            window.location.href = "http://blahblah.com/#consumer";
        };
        var hashPath = "." + window.location.hashPath.slice(1);
        var pathObjKey = path.slice(1);
        $(".industry-nav__link[data-filter='" + hash + "']").addClass("is-active")
        $('.industry-description').append(indDescObj[pathObjKey])
})

2 个答案:

答案 0 :(得分:0)

我认为您应该使用||代替&&。换句话说,你说 body有类,位置不是A,位置不是B等,然后做点什么

答案 1 :(得分:0)

正如其他人已经指出的那样,问题在于你!和||组合。解决方案是替换||与&amp;&amp;。

不是比较每个值,而是可以动态地将它放在一个数组中进行比较。

例如:

    if (<firstcondition> && $.inArray(window.location.href, ['<value1>', '<value2>', '<value3>', '<value4>']) == -1) {
//body    
}

通过此link了解其工作原理。