Javascript:使用 "if...else" 语句触发 "for" 循环无效

Javascript: Triggering "for" loop using "if...else" statements not working

我正在尝试制作一个简单的脚本,它会在我勾选复选框时自动阻止文件中的输入框。 为此,我试图通过每次单击复选框时触发循环来 add/remove "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>

但是,我似乎无法让它工作。我没有太多编码经验,我觉得我犯了一个非常基本的错误,但到目前为止我找不到解决这个问题的方法......我该如何解决这个问题?是否有任何其他解决方法来获得相同的结果?

提前致谢

您需要使用 document.getElementById("lock") 而不是 getElementById("lock") 并为您的变量使用正确的变量名称。您使用了 inputBoxesboxes,而您打算使用相同的变量。

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>