jquery/javascript:uncaughttypeerror?

jquery/javascript:uncaughttypeerror?,javascript,jquery,Javascript,Jquery,嘿,伙计们, 我写了一个小小的自定义动画滚动功能 function scroll(selector, animate, viewOffset) { pageOffset = selector.offset(); scrollPos = pageOffset.top - viewOffset; if (animate) { $('html, body').animate({scrollTop : scrollPos + 'px'}, {

嘿,伙计们, 我写了一个小小的自定义动画滚动功能

function scroll(selector, animate, viewOffset) {

    pageOffset = selector.offset();
    scrollPos = pageOffset.top - viewOffset;

    if (animate) {

        $('html, body').animate({scrollTop : scrollPos + 'px'}, {
            duration: 'slow', // how fast we are animating
            easing: 'easeOutQuint', // the type of easing
            complete: function() { }
        });

    } else {
        $('html, body').scrollTop( scrollPos );
    }

}
我用
scroll($('#something'),false,30)来称呼它

它实际上是可以工作的,但是有时候它有点问题,并且函数不能正常工作。我总是在单击事件时调用scroll()函数

我遇到的最大问题是,在页面加载时,我的控制台会告诉我以下内容

未捕获类型错误:无法读取 null的属性“top”(script.js第191行,即上面示例中的第3行)

知道是什么导致了这个错误吗?甚至在dom就绪或加载时都不会调用scroll()函数。它只是在特定的点击事件中调用

谢谢你的帮助

应该是:

pageOffset = $(selector).offset();

我通常会收到与选择器错误类型相同的“神秘错误”

使用try/catch语句包装函数中的所有代码,并尝试对其进行调试。几乎所有主流浏览器中都有调试工具。在catch语句中设置一个断点,然后您的脚本点击此处查看pageOffset和选择器变量


注意:PhpStorm拥有迄今为止最好的JavaScript调试器。

您确定页面上定义了#选择器吗?

这取决于参数是否已经是jQuery对象。就我个人而言,我总是用$.()来包装所有东西,这样就不重要了。参数名“selector”意味着它只是一个选择器,而不是一个jQuery对象-你可能是对的,但在我看来它似乎不是一个jQuery对象,这也解释了他所犯的错误。当你尝试使用scroll()ok时,仍然会出现同样的错误。然而,当我调用
scroll($('something'),…
时,我是否还没有传递jquery对象?在文本中,他说他正在传递
$('something')