如果页面上没有元素,则会出现Javascript错误

时间:2014-05-09 09:49:36

标签: javascript jquery

我希望每个页面都有一个脚本文件,其中包含该特定页面可能需要或可能不需要的脚本。在我的主页上我有这个脚本:

$(function () { 

var $select = $('#select');
var $window = $(window);
var isFixed = false;
var init = $('#select').offset().top;

$window.scroll(function () {
    var currentScrollTop = $window.scrollTop();
    if (currentScrollTop > init && isFixed === false) {
        isFixed = true;
        $select.css({
            top: 0,
            position: 'fixed'
        });
        console.log("fixed");
    } else if(currentScrollTop <= init && isFixed === true) {
        isFixed = false;
        $select.css('position', 'relative');
        console.log("unfixed");
    }
});

$("#scroll").click(function () {
    $('html, body').animate({
        scrollTop: $(".jumbo").offset().top + $(".jumbo").height()
    }, 300);
});

});

但是当它在主页上运行时(没有#select元素)我收到此错误并破坏了我的脚本:

  

未捕获的TypeError:无法读取属性&#39; top&#39;未定义的

如果在该特定页面上不需要该脚本而不必将其加载到自己的文件中,我怎样才能使它不会导致错误?

我应该在页面加载时调用该函数吗?

1 个答案:

答案 0 :(得分:1)

您可以使用length属性检查元素是否存在:

var init = $select.length ? $select.offset().top : 0;

如果元素不存在,则返回0,否则返回顶部偏移量。