@AbaiS

Как исправить ошибку?

Код выдает ошибку, хотя раньше всё работало. Помогите исправить ошибку.
const tabs = (headerSelector, tabSelector, contentSelector, activeClass, display = "flex") => {
    const header = document.querySelector(headerSelector),
          tab = document.querySelectorAll(tabSelector),
          content = document.querySelectorAll(contentSelector);

    function hideTabContent() {
        content.forEach(item => {
            item.style.display = 'none';
        });

        tab.forEach(item => {
            item.classList.remove(activeClass);
        });
    }

    function showTabContent(i = 0) {
        content[i].style.display = display;  = ошибку выдаёт эта строка
        tab[i].classList.add(activeClass);
    }

    hideTabContent();
    showTabContent();

    header.addEventListener('click', (e) => {
        const target = e.target;
        if (target && 
            (target.classList.contains(tabSelector.replace(/\./, '')) ||
        target.parentNode.classList.contains(tabSelector.replace(/\./, '')))) {
            tab.forEach((item, i) => {
                if (target == item || target.parentNode == item) {
                    hideTabContent();
                    showTabContent(i);
                }
            });
        }
    });
};

export default tabs;


Оказалось проблема не в этом
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Alexandre888
@Alexandre888
Javascript-разработчик
content[i] равняется undefined, поэтому получить какие-либо его свойства не выйдет - это то же самое, что и undefined.style.display.

чтобы избежать подобного рода ошибок, вы можете добавить функцию для проверки:
const checkContent = i => content[i] !== undefined;

function showTabContent(i = 0) {
    if (checkContent(i)) {
        content[i].style.display = display;
        tab[i].classList.add(activeClass);
    } else {
        // сделать что-нибудь, в случае, если content[i] === undefined
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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