serii81
@serii81
Я люблю phр...

Как решить «Functions declared within loops referencing an outer scoped»?

Вот мой код
let submit = document.querySelector('input[type="submit"]');
let calcCollection = document.querySelectorAll('input[name="calc1"], input[name="calc2"]');
let select = document.querySelector('#sign');
let output = document.querySelector('.output');

submit.onclick = function (e) {
  e.preventDefault();
  let result;
  let sign = select.value;

  if (calcCollection[0].value === '' || calcCollection[1].value === '') {
    submit.setAttribute('disabled', 'disabled');
  } else {
    let calc1 = parseInt(calcCollection[0].value);
    let calc2 = parseInt(calcCollection[1].value);

    switch (sign) {
      case '+':
        result = calc1 + calc2;
        break;

      case '-':
        result = calc1 - calc2;
        break;

      case '*':
        result = calc1 * calc2;
        break;

      case '/':
        if (calc2 > 0) {
          result = calc1 / calc2;
        } else {
          alert('invalid opperation');
        }
        break;
    }

    if (result) {
      output.innerHTML = result;
    }
  }
};

for(let i = 0; i < calcCollection.length; i++){
  calcCollection[i].onkeydown = function(){
    submit.removeAttribute('disabled');
  };
}


Ошибка говорит, что нельзя декларировать функцию в цикле, но как тогда повесить событие на каждого элемента из коллекции?
  • Вопрос задан
  • 41 просмотр
Решения вопроса 2
abyrkov
@abyrkov
JavaScripter
Можно. Это JSLint подсказывает, что такой код может быть неправильным
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Grabr Inc. Москва
от 2 500 до 4 500 usd.
KUPIBILET.RU Санкт-Петербург
от 100 000 до 130 000 руб.