JavaScript: запуск цикла for с помощью операторов if ... else не работает - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь создать простой скрипт, который автоматически блокирует поля ввода в файле, когда я ставлю галочку.Для этого я пытаюсь добавить / удалить атрибут «disabled», запуская цикл каждый раз, когда устанавливается флажок.Выглядит примерно так:

function locker() {
  var boxes = document.querySelectorAll("input[type='text']");
  var x = getElementById("lock")
  for (i = 0; i < inputBoxes.length; i++) {
    if (x.checked == true) {
      boxes[i].disabled = true;
    } else {
      boxes[i].disabled = false;
    }
  }
}
<input type="checkbox" id="lock" onClick="locker()">
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>

Однако я не могу заставить его работать.У меня нет большого опыта написания кода, и я чувствую, что совершаю очень простую ошибку, но пока не могу найти решение этой проблемы ... Как я могу решить эту проблему?Есть ли другие способы обойти такой же результат?

Заранее спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Вам нужно использовать document.getElementById("lock") вместо getElementById("lock") и использовать правильные имена переменных для ваших переменных. Вы использовали inputBoxes и boxes, когда хотели использовать одну и ту же переменную.

function locker() {
  var inputBoxes = document.querySelectorAll("input[type='text']");
  var x = document.getElementById("lock")
  for (i = 0; i < inputBoxes.length; i++) {
    if (x.checked == true) {
      inputBoxes[i].disabled = true;
    } else {
      inputBoxes[i].disabled = false;
    }
  }
}
<input type="checkbox" id="lock" onClick="locker()">
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>
...