为什么'否则if'表述不正确

Why does this 'else if' statement not work?

本文关键字:不正确 否则 为什么 if      更新时间:2023-09-26

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

//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)"});
            });
        }
    });
});

您应该查看javascript控制台。您很可能会看到类似

这样的错误。
Uncaught TypeError: Cannot read property 'top' of undefined

我的猜测是页面上没有class="head-block"元素-这意味着windowpos >= posdown.top将抛出错误,导致您的脚本执行在该点停止。

它不应该影响页面上的其他脚本-如果它真的杀死了所有的javascript,它表明一个编译错误,但没有一个在你粘贴的。有时脚本中会出现一些有趣的字符,从而导致这种错误。如果你研究了第一种可能性并排除了它,试着把上面问题中的内容复制回你的脚本中——如果有什么有趣的地方,这应该会"清理"它。

无论哪种方式,您的第一个停靠端口应该始终是javascript控制台。如果我上面的建议没有帮助,你应该在控制台中寻找错误,并编辑你的问题来显示它。