Счетчик не передает значение в функцию [дубликат]

129
11 августа 2019, 09:40

На данный вопрос уже ответили:

  • Почему асинхронная функция внутри цикла выполняет последнюю итерацию много раз? 2 ответа

Есть вот такой код:

for (var i = 0; i <= some.length; i++) {
  block1[i].onmouseenter = function() {
    block2[i].classList.toggle('active_game');
  }
}

block2 не получает i

Вот что я планировал:

block1[0].onmouseenter = function() {
  block2[0].classList.toggle('active_game');
}
block1[1].onmouseenter = function() {
  block2[1].classList.toggle('active_game');
}

Подскажите, пожалуйста, как я могу решить данную проблему. Желательно на native js.

Answer 1

Все обработчики в вашем коде ссылаются на одну переменную i. Можно заменить var на let или попробовать такой вариант:

for (var i = 0; i <= some.length; i++) {
  createHandler(i);
}
function createHandler(id) {
  block1[id].onmouseenter = function(){
      block2[id].classList.toggle('active_game');
  }
}
READ ALSO
Как добавить текст через JS

Как добавить текст через JS

У меня есть input для того, чтобы пользователь мог писать что-либоИ у меня есть p, чтобы выводить содержимое input в него

131
Как передать name и из JSON в JS объект? [дубликат]

Как передать name и из JSON в JS объект? [дубликат]

На данный вопрос уже ответили:

129
ESlint и борьба с firebase

ESlint и борьба с firebase

Имеется вот так код: файл: initjs

134