Uncaught TypeError: Cannot read property 'top' of null
Имеется скрипт для скролла:
$(document).ready(function(){
// сохраняем высоту шапки
var headerHeight = $('.menu-wrap').height();
// прокрутка при клике по пункту меню
$("a.menu-nav-link").click(function(e) {
e.preventDefault();
// вычисляем смещение от начала документа до нужного раздела
var offsetTop = $("#"+$(this).data("target")).offset().top - headerHeight;
// производим прокрутку
$('html, body').animate({scrollTop: offsetTop}, 500);
});
// обработка скроллинга (изменение активного элемента меню)
$(document).scroll(function(){
var offsets = [];
$('nav a').each(function(index, element){
// собираем в массиве offsets смещения разделов относительно начала документа
offsets.push($("#" + $(element).data('target')).offset().top);
});
// дополняем массив еще одним елементом- высота всего документа
offsets.push($(document).height());
// изменяем активный пункт как только область зашла за полэкрана: $(window).height() / 2
var docScroll = $(document).scrollTop() + headerHeight + $(window).height() / 2;
for (var i = 0; i < offsets.length - 1; i++) {
if (docScroll >= offsets[i] && docScroll < offsets[i+1]) {
$('.active').removeClass('active');
$('nav a').eq(i).addClass('active');
break;
};
};
});
})
Если его подключаю, то в консоле хрома вылазят следующие ошибки:
Uncaught TypeError: Cannot read property 'top' of null | scrolling.js:18
(anonymous function) | scrolling.js:18
e.extend.each | jquery.min.js:2
e.fn.e.each | jquery.min.js:2
(anonymous function) | scrolling.js:16
f.event.dispatch | jquery.min.js:3
h.handle.i | jquery.min.js:3
Подскажите, в чем может быть дело? В данной области не силён, рассчитываю на Вашу помощь. Спасибо.
Источник: Stack Overflow на русском