如果javascript代码段未使用,它将阻止其他javascript工作

If javascript snippet is unused it blocks other javascript from working

本文关键字:javascript 工作 其他 代码 未使用 如果      更新时间:2023-09-26

我使用以下代码在卷轴上有一个固定的标题。在使用它的页面上,其他javascript可以正常工作,但在页面上,我没有类"top",也没有使用固定的头,它破坏了其他javascript。我该如何防止这种情况发生?我应该先检查一下页面上是否存在该类吗?

var fixmeTop = $('ul.top').offset().top;
$(window).scroll(function() {
    // do something
});

您收到一个错误,该错误阻止其他javascript运行,因为如果ul.top不存在,那么您的第一行$('ul.top').offset().top;正在引发一个错误,导致页面上的其余脚本无法运行。

将代码封装在if块中,该块在尝试执行之前检查元素是否存在:

if ($('ul.top').length) {
    var fixmeTop = $('ul.top').offset().top;
    $(window).scroll(function() {
        var currentScroll = $(window).scrollTop();
        if (currentScroll >= fixmeTop) {
            $( "ul.top" ).addClass( "top" );
            $('ul.top').css({
                position: 'fixed',
                top: '0',           
                left: 'auto'
            });
        } else {
            $( "ul.top" ).removeClass( "top" );
            $('ul.top').css({
                position: 'relative',   
                top: '0'             
            });
        }
    });
}

如果你使用浏览器控制台工具,你会看到这一点:如何使用浏览器控制台

在代码中对类进行检查。例如

 if ($('.top').length) {

你的答案在你最初的两行,上面写着

var fixmeTop = $('ul.top').offset().top;
$(window).scroll(function() {
--code 
}

在你的第一行中,你有$('ul.top'),它会给你一个未定义的值,然后你正在使用.offset——我认为它应该给你未定义的,但它不是一个函数。

理想情况下,您应该检查该类是否存在,然后只做一些事情。如果没有,不要执行整个块,因为你的windows滚动方法使用fixmeto,当这个类本身不存在时,fixmeto就不存在了

希望这能有所帮助。

快乐学习