@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, результат такой же.
Как выполнить это в цикле и перебрать все элементы?
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 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();
  });
}
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Admon Новосибирск
от 50 000 до 70 000 руб.
Энергомера Ставрополь
от 28 000 до 30 000 руб.
14 дек. 2018, в 00:12
1300 руб./за проект
13 дек. 2018, в 21:54
5000 руб./за проект