@aleksandr2312

Почему i is not defined?

Почему выводит ошибку что Uncaught ReferenceError: i is not defined at HTMLDivElement.toggleSkills
const skillsContent = document.getElementsByClassName('skills__content');
const skillsHeader = document.querySelectorAll('.skills__header');

function toggleSkills() {
  let itemClass = this.parentNode.className
  for (i = 0; i < skillsContent.length; i++) {
    skillsContent[i].className = 'skills__content skills__close'
  }
  if (itemClass === 'skills__content skills__close') {
    this.parentNode.className = 'skills__content skills__open'
  }
}

skillsHeader.forEach((el) => {
  el.addEventListener('click', toggleSkills)
});
  • Вопрос задан
  • 602 просмотра
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
for (i = 0; i < skillsContent.length; i++) {
Ты забыл объявить переменную i
Просто добавь let и всё заработает:
for (let i = 0; i < skillsContent.length; i++) {

Кстати not defined и undefined - это разные вещи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Потому что если в функции не объявить переменную - она будет взята из внешнего блока, а если и там нигде не объявлена, но нет 'use strict' - будет использоваться поле глобального объекта window, то есть, window.i
Если use strict есть, то поведение будет нормальным - ругаться на необъявленную переменную.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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