Задать вопрос
@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)
});
  • Вопрос задан
  • 776 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
for (i = 0; i < skillsContent.length; i++) {
Ты забыл объявить переменную i
Просто добавь let и всё заработает:
for (let i = 0; i < skillsContent.length; i++) {

Кстати not defined и undefined - это разные вещи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Потому что если в функции не объявить переменную - она будет взята из внешнего блока, а если и там нигде не объявлена, но нет 'use strict' - будет использоваться поле глобального объекта window, то есть, window.i
Если use strict есть, то поведение будет нормальным - ругаться на необъявленную переменную.
Ответ написан
Комментировать
@Samsa84
let arr = ["John", "Mike", "Bill"];

for (let i = 0; i < arr.length; i++);
console.log(arr[i]);
Всем привет! Почему ошибка Uncaught ReferenceError: i is not defined, при объявленной i?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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