sanek53292
@sanek53292
Учусь FullStack разработке

Как отключить выполнение функции Javascript на других страницах?

Здравствуйте, уважаемые разработчики!

Вопрос простой)

На главной странице есть табы на чистом javascript.
При переходе на другую сраницу выдаёт такую ошибку в консоли:

Ошибка:
spoiler
Uncaught TypeError: Cannot read properties of undefined (reading 'addEventListener')

Я понимаю, что отсутствует элемент. Но как отключить работу этой функции на других страницах, чтобы могли выполняться последующие функции?

Код Javascript:
spoiler
hideTabContent(1)

    function showTabContent(b) {
        if (tabContent[b].classList.contains('hide')) {
            hideTabContent(0);
            tabContent[b].classList.add('show');
            tabContent[b].classList.remove('hide');
            tab[b].classList.add('active');
        } 
    }

    info.addEventListener('click', function(event) {
        let target = event.target;
        if (target.className == 'info-header-tab') {
            for (let i = 0; i < tab.length; i++) {
                if (target == tab[i]) {
                    showTabContent(i);
                    break;
                }
            }
        }
    })
  • Вопрос задан
  • 395 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Но как отключить работу этой функции на других страницах, чтобы могли выполняться последующие функции?


Варианты:
  1. проверять, есть ли элемент, прежде, чем что-то с ним делать if (element) { /* что-то с ним делаем */ }
  2. проверять, на какой странице находимся
    if (window.location.pathname === "/contacts/form.html") { /* тут всякая магия */ }

  3. обернуть в
    try { /* здесь код который вызывает ошибки */ } catch() {}


Ответ написан
@andand44
Нужно проверять на существование элемент и потом уже обращаться к нему
if ( document.querySelectorAll(".info-header-tab").length ) {
    alert("Элемент найден!");
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Hecktosaurus
Люблю писать код под специфические задачи
document.querySelector('#info')?.addEventListener('click', function(event){
	<...>
});

Или более совместимый вариант
document.querySelectorAll('.info-header-tab').forEach(function(el, ind){
	el.addEventListener('click', function(event){
		<...>
	})
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы