Не работает плавная прокрутка (JavaScript) и некоторые ошибки - PullRequest
0 голосов
/ 16 июня 2020

Добрый день. Я обнаружил эту ошибку , когда работаю над своим проектом. Вчера я использовал javascript внутри файла html, и он работает нормально, но когда я сделал его как внешний скрипт и связал с индексом . html, плавная прокрутка не показалась поработайте над некоторыми ссылками на раздел. Вот ошибка ниже:

smoothscroll.js:16 Uncaught TypeError: Cannot read property 'top' of undefined
    at HTMLAnchorElement.<anonymous> (smoothscroll.js:16)
    at HTMLAnchorElement.dispatch (jquery.min.js:2)
    at HTMLAnchorElement.y.handle (jquery.min.js:2)

Он отлично работает со ссылками, такими как <a href="#"></a> и т.п., но когда дело доходит до панели навигации, которая ссылается на раздел той же страницы, это дает ошибка выше в консоли.

1 Ответ

0 голосов
/ 17 июня 2020

$(hash) элемент не найден. Пример: <a href="#something">Link</a>, если элемент с идентификатором something не найден, произойдет ошибка. Прокрутку нужно выполнять только тогда, когда элемент существует.

$(document).ready(function(){
    $("a").on('click', function(event){
        if (this.hash){
            event.preventDefault();
            var hash = this.hash,
                element = $(hash);
            if(element.length){ //check if the element exists before doing the scrolling
                $('html, body').animate({
                    scrollTop: element.offset().top
                }, 800, function(){
                    window.location.hash = hash;
                });
            }
        }    
    }); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...