@drDru

Как использовать общий файл JS на разных страницах сайта?

Имею общий файл script.js, который собирается из нескольких файлов, предположим slide-index.js, slide-shop.js с помощью gulp.

Файл script.js подключаю на всех страницах сайта. Хорошая ли это практика? Это ещё один вопрос, с тем что многие функции внутри общего файла не нужны на разных страницах (привел аналогию со слайдерами только для главной страницы / страницы магазина).

Главная тема вопроса: Ненужные участки кода ( в т.ч. слайдер для магазина) ломает основной слайдер, на главной странице.

Функции обоих слайдеров называются по разному. Переменные на всякий случай тоже. Уже 10 раз все перепроверил, но JS жалуется, что на данной странице нет тех элементов, которые необходимы для работы.

Находясь на Главной странице, жалуется на:

Uncaught TypeError: can't access property "addEventListener", document.querySelector(...) is null


Что таких элементов нет на этой странице, и подвязываться некуда. Хорошо, просто закомментировал все слушатели, но тут следующая проблема - не видит slides2, оно и понятно, slides2 это слайд магазина.

Uncaught TypeError: can't access property "classList", slides2[(slideIndex2 - 1)] is undefined


И тут начинается какой-то ступор. Если НЕ объединять скрипты в один, и подключать на разные страницы СВОИ скрипты, то всё работает хорошо. Сторонних библиотек Jquery и остальное не подключаю.

Как решить данную проблему?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 3
Armrisch
@Armrisch
Full Stack Developer
Добавь проверки в код,
let some = document. querySelector(".something");
if(some) {
   some.addEventListener("click",dosomething,true);
}

Но конечно же правильно подключать различающийся код на каждой странице отдельно
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Ну так если вы подключаете один и тот же код на разные страницы, код надо переписать так чтобы он мог работать на любой из них.

в самом простом варианте - наставьте условий проверки, есть ли нужный элемент на странице.
Если есть - запускаем код, если нет, то не запускаем.
Ответ написан
@alekssamos
Программист любитель
Или как вариант каждый отдельный блок кода запихивать в нутрь try catch. Но проверки лучше.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 авг. 2020, в 16:11
500 руб./за проект
11 авг. 2020, в 16:07
4000 руб./за проект
11 авг. 2020, в 15:28
3000 руб./за проект