创建特定于页面的JavaScript,同时将其全部保存在一个全局JavaScript文件中?

创建特定于页面的JavaScript,同时将其全部保存在一个全局JavaScript文件中?,javascript,jquery,Javascript,Jquery,我有一个JavaScript文件,它包含在我网站的每个页面中 我把下面的代码作为该文件的一部分。但是,此代码仅适用于1个特定页面,不会适用于站点的任何其他页面 因此,当查看站点的其他页面时,我的控制台窗口将显示以下错误消息: 未捕获类型错误:无法读取null的属性“top” 这是我经常遇到的问题,有什么好方法可以将下面的代码包装成某种东西,以防止此错误显示在我的站点的所有其他页面上,这些页面没有它正在寻找的DOM元素 是否可以将此代码块包装成一个函数,然后只在需要的页面上调用该函数,同时将其保存

我有一个JavaScript文件,它包含在我网站的每个页面中

我把下面的代码作为该文件的一部分。但是,此代码仅适用于1个特定页面,不会适用于站点的任何其他页面

因此,当查看站点的其他页面时,我的控制台窗口将显示以下错误消息:

未捕获类型错误:无法读取null的属性“top”

这是我经常遇到的问题,有什么好方法可以将下面的代码包装成某种东西,以防止此错误显示在我的站点的所有其他页面上,这些页面没有它正在寻找的DOM元素

是否可以将此代码块包装成一个
函数
,然后只在需要的页面上调用该函数,同时将其保存在这个1全局JavaScript文件中

// Add Fixed Header Bar on Tasks Edit View with a "Save" Button
var editTaskFixedHeaderBar = $('#task-edit-heading-row-labels');
var fixmeTop = editTaskFixedHeaderBar.offset().top;

$(window).scroll(function() {
    var currentScroll = $(window).scrollTop();
    if (currentScroll >= fixmeTop) {
        editTaskFixedHeaderBar.css({
            position: 'fixed',
            top: '0',
            left: '10'
        });
    } else {
        editTaskFixedHeaderBar.css({
            position: 'static'
        });
    }
});

将代码包装在if语句中,检查元素是否存在:

if ($('#task-edit-heading-row-labels').length > 0) {
    // The element exists... put your code here.
}

基本上,$(…)将始终返回,没有错误,无论它发现了什么;如果未找到任何内容,则其.length属性将等于零。因此,编写if($(…).length>0)是处理页面特定内容的一种简洁方法,甚至是在您不确定某些内容是否存在的任何情况下,无需使用类标记页面或解析URL,等等。

为什么不在正文中添加一个类,然后检查页面是否有该类,并仅在正文中有该类时运行代码?错误消息几乎给出了解决方案。首先检查
editTaskFixedHeaderBar.offset()
是否为空。如果是,跳过代码的其余部分。为什么不将特定页面的代码放在单独的.js文件中?然后在这个页面中访问它?对不起,伙计们,我已经写了30个小时的代码了…我没有在我最好的状态下思考,也不应该发布这个,但是现在删除它已经太晚了。谢谢,我已经超过24个小时了,没有在我最好的状态下思考…我已经将这个代码移动到一个函数中,我只是没有想到这个if语句仍然可以进入我的函数中……我在向后想,在调用函数之前,我必须基本上检查2x一个,然后再调用另一个内部函数……就像我说的那样,我没有思考,谢谢……时间一过,我会选择这个,让我做soEpic!祝你的项目好运。我认为反对票有点苛刻——你问了一个公平的问题。现在,我们可以轻松访问JS构建系统,并且可以将所有JS放在一个文件中,关于如何处理特定于页面的内容,存在一些问题。。。如果你没有想到使用$(…).length检查东西,那么你会问一个合理的问题。谢谢,这是一个愚蠢的基本问题…从我的经验来看,当我问这样一个简单的问题时,我会因为我的经验和我的声誉得分而被否决…就像我在12k范围内一样,基本上,我被要求在提问之前,尽可能做好所有的研究工作,并记录我尝试过和没有尝试过的内容,最重要的是,不要问我期望知道答案的基本问题…我同意所有这些,但我觉得有时这样做会让我感到很开心,会得到反对票和粗鲁的评论…我想找到一个好方法来定位特定页面,至少在我正在工作的SugarCRM模块中,他们没有花哨的SEO好友URL,所以我可以通过PHP从$\u GET访问某些变量,所以也许我也可以通过JS将这些变量作为目标。例如,每个页面在URL中都有一个操作
index.php?module=module\u name&action=ActionName
如果我可以用
ActionName
在JS中定位页面,那么我想我可能可以在我的主JS文件中编写特定于页面的代码。感谢大家的提醒,我实际上已经使用了
$(…).length>0
之前,但似乎存在这样的情况:它并不总是有效的