Zheleznov
@Zheleznov

Почему не работает код JS вставленный на лендинг?

Всем привет
Подскажите пожалуйста, в чем может быть проблема?

Код простой, добавляет и удаляет класс на блоке при скроле
Он отлично работает в песочнице - https://codepen.io/Zhelezniy/pen/RwoGPyV

но стоит его вставить в проект, и он не работает..
копирую в точности как есть

В проекте другого JS кода нет, подключенных скриптов нет
Что может быть не так?

(другой код работает норм, например если подключить и инициализировать swiper, всё корректно)

Тут скорей какой-то нюанс мешает... наверно..
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
Если вставить такой код в <head>, работать не будет. А если вставить непосредственно перед </body>, всё будет работать нормально.

По умолчанию JS-код выполняется в том момент, когда браузер при анализе HTML-кода добрался до <script>. И если кон находится в начале страницы, тегов <div class="menu__body"> и <div id="block"> в момент выполнения JS-кода ещё не существует.

Чтобы JS-код можно было вставлять в любое место страницы, надо примерно так:
document.addEventListener('DOMContentLoaded', function() {
    var mainNav = document.querySelector('.menu__body');
    window.onscroll = function() {
        mainNav.classList.toggle('test', mainNav.scrollTop > 50 || document.documentElement.scrollTop > 50);
    }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы