Uncaught TypeError:无法读取锚链接上未定义的属性“ top”->

时间:2020-01-30 19:33:55

标签: javascript scroll anchor scrolltop mcustomscrollbar

在以下网站(https://skayan.de/misc/example/)上,两个按钮链接到一个称为右侧的部分:“更多信息”向下滚动到内容部分(“某些内容”),“联系”向下滚动到下部区域网站(此处为)。在桌面上,锚点链接有效,但在移动设备上,出现上述错误。

这是代码:

var lastToogle = null;
$(document).ready(function(){
"use strict";

$('a#go-contact').on( "click", function() {

     if (lastToogle === null || $(".overlay").hasClass("skew-part")) {
        // open
        $(".overlay").removeClass("skew-part");
        $("#right-side").removeClass("hide-right");
        $("#close-more-info").removeClass("hide-close");
        $('.mCSB_scrollTools').addClass('mCSB_scrollTools-left');
        $("#mcs_container").mCustomScrollbar("scrollTo", "#contact-form",{
            scrollInertia:500,
            callbacks:false
        });
        lastToogle = 'go-contact';
    } else if (lastToogle === 'go-contact'){
        // close
        $(".overlay").addClass("skew-part");
        $("#right-side").addClass("hide-right");
        $("#close-more-info").addClass("hide-close");
        $('.mCSB_scrollTools').removeClass('mCSB_scrollTools-left');
        lastToogle = null;
    } else {
        // scroll to
        $("#mcs_container").mCustomScrollbar("scrollTo", "#contact-form",{
            scrollInertia:500,
            callbacks:false
        });
        lastToogle = 'go-contact';
    }
});

$('a#open-more-info').on( "click", function() {
    if (lastToogle === null || $(".overlay").hasClass("skew-part")) {
        // open
        $(".overlay").removeClass("skew-part");
        $("#right-side").removeClass("hide-right");
        $("#close-more-info").removeClass("hide-close");
        $('.mCSB_scrollTools').addClass('mCSB_scrollTools-left');
        $("#mcs_container").mCustomScrollbar("scrollTo", "#right-side",{
            scrollInertia:500,
            callbacks:false
        });
        lastToogle = 'open-more-info';
    } else if (lastToogle === 'open-more-info'){
        // close
        $(".overlay").addClass("skew-part");
        $("#right-side").addClass("hide-right");
        $("#close-more-info").addClass("hide-close");
        $('.mCSB_scrollTools').removeClass('mCSB_scrollTools-left');
        lastToogle = null;
    } else {
        // scroll to
        $("#mcs_container").mCustomScrollbar("scrollTo", "#right-side",{
            scrollInertia:500,
            callbacks:false
        });
        lastToogle = 'open-more-info';
    }
});

$('button#close-more-info').on( "click", function() {
    $(".overlay").addClass("skew-part");
    $("#right-side").addClass("hide-right");
    $("#close-more-info").addClass("hide-close");
    $('.mCSB_scrollTools').removeClass('mCSB_scrollTools-left');
    setTimeout(function() {
        $("#mcs_container").mCustomScrollbar("scrollTo", "#right-side",{
            scrollInertia:500,
            callbacks:false
        });
    }, 350);
});

尝试更改此块:

$("#mcs_container").mCustomScrollbar("scrollTo", "#right-side",{
            scrollInertia:500,
            callbacks:false
        });

对此:

$('html,body').animate({
  scrollTop: $("#right-side").offset().top},'slow');

也用于“联系表” ...

但这仅适用于移动设备,不适用于台式机。

如果在印记和隐私对话框中删除,“ More Info”的锚点在手机和台式机上均会令人困惑。

该问题的解决方案是什么?

0 个答案:

没有答案