Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery偏移量#NaN问题_Javascript_Jquery - Fatal编程技术网

Javascript JQuery偏移量#NaN问题

Javascript JQuery偏移量#NaN问题,javascript,jquery,Javascript,Jquery,我在页面顶部有一个固定的菜单栏,所有菜单链接都是同一页面上的锚链接。简言之,这是一个单页网站,分为多个部分,并以锚链接作为菜单项 我正在使用下面的javascript,以便在单击菜单项时平滑地滑动到部分 $(document).ready(function() { $("a.anchorLink").anchorAnimate() }); jQuery.fn.anchorAnimate = function(settings) { settings = jQuery.exte

我在页面顶部有一个固定的菜单栏,所有菜单链接都是同一页面上的锚链接。简言之,这是一个单页网站,分为多个部分,并以锚链接作为菜单项

我正在使用下面的javascript,以便在单击菜单项时平滑地滑动到部分

$(document).ready(function() {
    $("a.anchorLink").anchorAnimate()
});

jQuery.fn.anchorAnimate = function(settings) {

    settings = jQuery.extend({
        speed : 1100
    }, settings);   

    return this.each(function(){
        var caller = this
        $(caller).click(function (event) {  
            event.preventDefault()
            var locationHref = window.location.href
            var elementClick = $(caller).attr("href")

            var destination = $(elementClick).offset().top-60;
            $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, settings.speed, function() {
                window.location.hash = elementClick-60
            });
            return false;
        })
    })
}
由于顶部菜单的高度是60像素,我需要从offset()中减去它。top以确保幻灯片正常工作。我还必须减去在位置散列,否则有一个不稳定的幻灯片(在FF和IE中,在Chrome中工作良好)一旦幻灯片点击完成

它工作得很好,但问题是URL显示为而不是

这是完整的代码-。不幸的是,它不会在单击后显示以#NaN结尾的URL,而不是实际的链接ID,例如#store、#home或#contact。

尝试:

var destination = $(elementClick).offset().top -60;
$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, settings.speed, function() {
    //window.location.hash = elementClick
    elementClick
});
尝试:


你看过
$(caller.attr(“href”)
给你的东西了吗?它返回的字符串不能直接强制转换为数字,因此当您尝试从中减去60(无论出于何种原因,我不知道)时,您得到的是
NaN
-不是一个数字Number@YiJiang请在删除元素中的“-60”后运行代码单击firefox。你会明白为什么我除了这个别无选择。你知道这里发生了什么,对吧?你的代码之所以“有效”是因为你破坏了它。请仔细阅读,或者更简单地说,编辑样式,使元素的大小向上扩展60px。我知道是什么错误,我完全知道它为什么会出现。我需要知道我如何才能左右,以显示正确的锚链接网址。我更喜欢CSS方法,尽管我不确定“元素的大小范围向上60像素”是什么意思,以及它会有什么帮助。我理解您为什么在这里减去60:
var destination=$(elementClick).offset().top-60
,但为什么在这里:
window.location.hash=element点击-60
你看了
$(调用者).attr(“href”)
给你什么了吗?它返回的字符串不能直接强制转换为数字,因此当您尝试从中减去60(无论出于何种原因,我不知道)时,您得到的是
NaN
-不是一个数字Number@YiJiang请在删除元素中的“-60”后运行代码单击firefox。你会明白为什么我除了这个别无选择。你知道这里发生了什么,对吧?你的代码之所以“有效”是因为你破坏了它。请仔细阅读,或者更简单地说,编辑样式,使元素的大小向上扩展60px。我知道是什么错误,我完全知道它为什么会出现。我需要知道我如何才能左右,以显示正确的锚链接网址。我更喜欢CSS方法,尽管我不确定“元素的大小范围向上60像素”是什么意思,以及它会有什么帮助。我理解您为什么在这里减去60:
var destination=$(elementClick).offset().top-60,但为什么在这里:
window.location.hash=element单击-60
Great。虽然它没有按照我想要的方式解决这个问题,但是它确实帮助很大,从URL中删除了#NaN并保持了功能完整。谢谢伟大的虽然它没有按照我想要的方式解决这个问题,但是它确实帮助很大,从URL中删除了#NaN并保持了功能完整。谢谢