我一直得到错误未定义的变量。我哪里错了?

时间:2014-03-30 23:20:42

标签: javascript jquery

我似乎无法找到问题我试图使用jQuery pluging easing.js以及jquery-1.11.0.min.js

创建一个简单的简易滚动效果
$(function(){
        //catch all clicks
        $("a").click(function(){
            // check if it has a #
            if(this.hash){
                // get rid of the # sign
                var hash = this.hash.substr(1);
                // get position ofd the links name
                var $toElement = $("a[name="+hash+"]");
                var toPosition = $toElement.position().top;
                // scroll animate to postion
                $("body,html").animate({
                    scrollTop : toPosition
                },2000,"easeOutExpo");
                return false;
            }
        });
    });

即使我这样尝试,我仍然会得到同样的错误:

        $(function(){
        //catch all clicks
        $("a").click(function(){
            // check if it has a #
            if(this.hash){
                // get rid of the # sign
                var hash = this.hash.substr(1);
                // get position ofd the links name
                var $toElement = $("a[name="+hash+"]");
                var $toPosition = $toElement.position().top;
                // scroll animate to postion
                $("body,html").animate({
                    scrollTop : toPosition
                },2000,"easeOutExpo");
                return false;
            }
        });
    });

1 个答案:

答案 0 :(得分:3)

我猜是

var $toElement = $("a[name="+hash+"]");

与任何元素都不匹配。

然后,$toElement.position()null

因此,

$toElement.position().top;

抛出错误。

要解决此问题,您可以尝试

var position = $("a[name="+hash+"]").position();
if(!toPosition) return false;
var topPosition = position.top;