Javascript 为什么';如果';声明不起作用?

Javascript 为什么';如果';声明不起作用?,javascript,jquery,Javascript,Jquery,除非删除else if语句,否则JavaScript将无法工作。一旦我这样做了,一切都很好,但我真的需要可以用完成的更改,如果。不知道为什么。它所做的是更改某个部分的菜单状态,并定义顶部和底部,而不仅仅是页面的顶部 //MENU COLOR CHANGE $(document).ready(function() { var a = $(".nav-mobile"); var b = $(".brand-box"); var c = $(".menu_item");

除非删除
else if
语句,否则JavaScript将无法工作。一旦我这样做了,一切都很好,但我真的需要可以用
完成的更改,如果
。不知道为什么。它所做的是更改某个部分的菜单状态,并定义顶部和底部,而不仅仅是页面的顶部

//MENU COLOR CHANGE

$(document).ready(function() {
    var a = $(".nav-mobile");
    var b = $(".brand-box");
    var c = $(".menu_item");
    var d = $(".facebook-top");
    var e = $(".vk-top");
    var f = $(".menu-item-facebook");
    var g = $(".menu-item-vk");
    var h = $(".head-block");
    var posup = b.position();
    var posdown = h.position();
    $(window).scroll(function() {
        var windowpos = $(window).scrollTop();

        if (windowpos <= posup.top) {
            a.removeClass("nav-mobile-black");
            c.removeClass("menu-item-black");
            d.removeClass("facebook-top-black");
            e.removeClass("vk-top-black");
            f.removeClass("menu-item-facebook-black");
            g.removeClass("menu-item-vk-black");

            $(".menu_item").mouseover(function(){
            $(this).css({"background-color": "rgba(0, 0, 0, 0.1)"});
            });
            $(".menu_item").mouseout(function(){
            $(this).css({"background-color": "rgba(0, 0, 0, 0.0)"});
            });  
        } 
      else if (windowpos >= posdown.top) {
            a.removeClass("nav-mobile-black");
            c.removeClass("menu-item-black");
            d.removeClass("facebook-top-black");
            e.removeClass("vk-top-black");
            f.removeClass("menu-item-facebook-black");
            g.removeClass("menu-item-vk-black");

            $(".menu_item").mouseover(function(){
            $(this).css({"background-color": "rgba(0, 0, 0, 0.1)"});
            });
            $(".menu_item").mouseout(function(){
            $(this).css({"background-color": "rgba(0, 0, 0, 0.0)"});
            }); 
      }
        else {
            a.addClass("nav-mobile-black");
            c.addClass("menu-item-black");
            d.addClass("facebook-top-black");
            e.addClass("vk-top-black");
            f.addClass("menu-item-facebook-black");
            g.addClass("menu-item-vk-black");

            $(".menu_item").mouseover(function(){
            $(this).css({"background-color": "rgba(255, 255, 255, 0.15)"});    
            });
            $(".menu_item").mouseout(function(){
            $(this).css({"background-color": "rgba(255, 255, 255, 0.0)"});
            });
        }

    });
});
//菜单颜色更改
$(文档).ready(函数(){
var a=$(“.nav mobile”);
var b=$(“.brand box”);
变量c=$(“.menu_项”);
var d=$(“.facebook top”);
变量e=$(“.vk top”);
var f=$(“.menu item facebook”);
var g=$(“.menu项vk”);
var h=$(“.head block”);
var posup=b.position();
var posdown=h.position();
$(窗口)。滚动(函数(){
var windowpos=$(window.scrollTop();
if(windowpos=posdown.top){
a、 removeClass(“导航移动黑色”);
c、 removeClass(“菜单项黑色”);
d、 removeClass(“facebook顶级黑”);
e、 removeClass(“vk顶黑”);
f、 removeClass(“菜单项facebook黑色”);
g、 removeClass(“菜单项vk黑色”);
$(“.menu_项”).mouseover(函数(){
$(this.css({“背景色”:“rgba(0,0,0,0.1)”});
});
$(“.menu_项”).mouseout(函数(){
$(this.css({“背景色”:“rgba(0,0,0,0.0)”});
}); 
}
否则{
a、 addClass(“导航移动黑色”);
c、 addClass(“黑色菜单项”);
d、 addClass(“facebook顶级黑”);
e、 addClass(“vk顶黑”);
f、 addClass(“菜单项facebook黑色”);
g、 addClass(“菜单项vk黑色”);
$(“.menu_项”).mouseover(函数(){
$(this.css({“背景色”:“rgba(255,255,255,0.15)”);
});
$(“.menu_项”).mouseout(函数(){
$(this.css({“背景色”:“rgba(255,255,255,0.0)”});
});
}
});
});

您应该查看javascript控制台。您很可能会看到如下错误

Uncaught TypeError: Cannot read property 'top' of undefined
我猜页面上没有
class=“head block”
-这意味着
windowpos>=posdown。top
将抛出错误,导致脚本执行在该点停止

它不应该影响页面上的其他脚本——如果它真的杀死了所有javascript,则表明存在编译错误,但粘贴的内容中没有。有时,你可以在你的脚本中找到有趣的角色,导致这种错误。如果你研究了第一种可能性并排除了它,试着把上面问题中的文字复制回你的脚本中——如果有什么有趣的地方,那应该“清理”它


无论如何,您的第一个调用端口应该始终是javascript控制台。如果我上面的建议没有帮助,您应该在控制台中查找错误并编辑您的问题以显示它。

请更好地解释“行不通”。将这些文章读到,这样你就可以提供更多有用的上下文信息(请自便)。它是受支持的,所以语法会起作用:“我删除”else-if“语句。意思是在那之后删除整个代码,或者用just-if替换else-if??有时JS问题似乎是一回事,但是与语法相关的项与其他项。。。因此,如果看不到您的错误消息,很难判断。您的
else
将永远无法到达,如果windowpos和posdown.top相等,会发生什么情况?在这种情况下,
if
else if
将为真。你应该重新考虑你的支票/条件。