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');
  };
}


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

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

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