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

如果javascript代码段未使用,则会阻止其他javascript工作,javascript,jquery,Javascript,Jquery,我使用下面的代码在滚动条上有一个固定的标题。在使用它的页面上,其他javascript可以正常工作,但在我没有类top的页面上,也没有使用固定的头,它会破坏其他javascript。我怎样才能防止这种情况?我应该首先检查页面上是否存在该类吗 var fixmeTop = $('ul.top').offset().top; $(window).scroll(function() { // do something }); 在代码周围对类进行检查。e、 g if ($('.top').l

我使用下面的代码在滚动条上有一个固定的标题。在使用它的页面上,其他javascript可以正常工作,但在我没有类top的页面上,也没有使用固定的头,它会破坏其他javascript。我怎样才能防止这种情况?我应该首先检查页面上是否存在该类吗

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

在代码周围对类进行检查。e、 g

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

在代码周围对类进行检查。e、 g

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

您将收到一个错误,该错误将阻止其他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'             
            });
        }
    });
}

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

您收到一个错误,该错误阻止其他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'             
            });
        }
    });
}

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

您的答案在开头的两行中

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

--code 
}
在您的第一行中有$'ul.top',它将为您提供未定义的,然后您使用的是.offset-我认为应该为您提供未定义的不是一个函数

理想情况下,您应该检查该类是否存在,然后只做一些事情。否则,不要执行整个块,因为windows scroll方法使用fixmetop,而这个类本身不存在时,它就不存在了

希望这能有所帮助


快乐学习

你的答案就在开头的两行

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

--code 
}
在您的第一行中有$'ul.top',它将为您提供未定义的,然后您使用的是.offset-我认为应该为您提供未定义的不是一个函数

理想情况下,您应该检查该类是否存在,然后只做一些事情。否则,不要执行整个块,因为windows scroll方法使用fixmetop,而这个类本身不存在时,它就不存在了

希望这能有所帮助


快乐学习

学会使用你的控制台。您将收到一个错误,该错误将阻止其他javascript运行,因为如果ul.top不存在,那么您的第一行$'ul.top'.offset.top;正在抛出一个错误,这将阻止页面上的其余脚本运行。您刚才描述了他所要求的内容。他知道这就是问题所在,在我看来,他想知道这通常是如何处理的。。。。真的吗?出于好奇,还有他的问题:有没有办法继续尝试执行其余的脚本,即使这样做失败了?可能try catch是个好主意,但我的意思是,如果任何脚本中发生类似的情况,那么其余的脚本是否总是注定要失败?@Ernesto,不,其余的脚本并不总是注定要失败,只有发生未捕获错误的事件线程中未执行的剩余部分。学会使用控制台。您将收到一个错误,该错误将阻止其他javascript运行,因为如果ul.top不存在,那么您的第一行$'ul.top'.offset.top;正在抛出一个错误,这将阻止页面上的其余脚本运行。您刚才描述了他所要求的内容。他知道这就是问题所在,在我看来,他想知道这通常是如何处理的。。。。真的吗?出于好奇,还有他的问题:有没有办法继续尝试执行其余的脚本,即使这样做失败了?可能try catch是个好主意,但我的意思是,如果在任何脚本中发生类似的事情,那么其余的脚本是否总是注定要失败?@Ernesto,不,其余的脚本并不总是注定要失败,只有发生未捕获错误的事件线程的任何未执行的剩余部分。正确答案,尽管var ul_top=$'ul.top',然后将$'ul.top'的所有其他实例替换为变量ul_top,例如如果ul_top.length等会更efficient@Adam-完全同意。问题的范围如此之广,以至于我不想谈论所有的最佳实践,比如你的建议!如果$'ul.top'。长度{有语法错误:认为它缺少before'ul@coder-最重要的是可维护性。如果你采纳Adam的建议,如果你改变选择器类,你只需要改变一个地方,而不是几个地方。这可能会导致性能稍好一些,但这不是真正的问题。正确答案wer,尽管var ul_top=$'ul.top',然后将$'ul.top'的所有其他实例替换为变量ul_top,例如,如果ul_top.length等会更efficient@Adam-完全同意。问题的范围使我
不过,我不想谈论所有的最佳实践,比如你的建议!如果$'ul.top'。长度{有语法错误:认为它缺少before'ul@coder-最重要的是可维护性。如果你采纳Adam的建议,如果你改变选择器类,你只需要改变一个地方,而不是几个地方。这可能会导致性能稍好一些,但这不是真正的问题。