@wiyod

Почему код не работает в цикле?

Вот так работает

const moveTo = new MoveTo()
    const trigger = document.getElementsByClassName('js-trigger')[0]

    moveTo.registerTrigger(trigger, function (target) {
      trigger.blur()
      if (target instanceof HTMLElement) {
        target.focus()
      }
    })


А вот так выбивает ошибку
Uncaught TypeError: Cannot read property 'blur' of undefined


const moveTo = new MoveTo()
    const triggers = document.getElementsByClassName('js-trigger')
    for (var i = 0; i < triggers.length; i++) {
      moveTo.registerTrigger(triggers[i], function (target) {
        triggers[i].blur()
        if (target instanceof HTMLElement) {
          target.focus()
        }
      })
    }


Также пробовал вместо triggers[i] просто i, результат такой же.
Как выполнить это в цикле и перебрать все элементы?
  • Вопрос задан
  • 297 просмотров
Решения вопроса 1
evgeniy8705
@evgeniy8705
Повелитель вселенной
const moveTo = new MoveTo();
const triggers = document.querySelectorAll(".js-trigger");

for (let trigger of triggers) {
  moveTo.registerTrigger(trigger, target => {
    trigger.blur();
    
    if (target instanceof HTMLElement) target.focus();
  });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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