Вот js для смены класса про скролле.
<script>
document.onscroll = function (event) {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
console.log(scrollTop);
if(scrollTop > 300) {
var el = document.getElementsByClassName('menu-mp')[0];
el.className = 'menu-mp2';
}
else if(scrollTop < 300) {
var el = document.getElementsByClassName('menu-mp2')[0];
el.className = 'menu-mp';
}
}
Но при прокрутке возникает бесконечное количество ошибок. Ругается на строчку
el.className = 'menu-mp2'
и на строчку
el.className = 'menu-mp';
Потому, что document.getElementsByClassName('menu-mp')
возращает пустой массив. То есть не найден элемент с классом menu-mp
. Далее вы из пустого массива берёте первый элемент и получаете undefined
, вместо HTMLElement
. Потом пытаетесь в undefined
в свойство className
что-то присвоить. В итоге возникает эта ошибка.
В итоге работает без проблем вот такой код. Надеюсь кому-то пригодится!
jQuery(document).ready(function($) {
//caches a jQuery object containing the header element
var header = $(".menu-mp");
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll > 300) {
header.removeClass('menu-mp').addClass("menu-mp2");
} else {
header.removeClass("menu-mp2").addClass('menu-mp');
}
});
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне нужно, чтобы при добавление фотографии, отображалось сразу же фотография которую добавилиТо есть добавили одну фотографию, она отобразилась,...
Есть одна функцияЯ получаю JSON с локалхоста на /receive/ , вывожу данные на страницу при помощи vue
Возникла такая проблемаСайт не хочет корректно отображатся в вебвю