javascript 检查是否选中复选框,返回addEventListener不是函数

lskq00tm  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(120)

嗨,我得到了下面的代码片段,我试图打印一个console.log依赖于是否复选框已被选中或没有。

var checkbox = document.querySelectorAll('.customer-club-widget__gender__categories .form__input-checkbox');

checkbox.addEventListener("change", function() {

    var isChecked = checkbox.checked;
    if(isChecked){ //checked
        console.log('checked');
    }else{ //unchecked
        console.log('unchecked');
    }
});

我一直收到以下错误:
未捕获的类型错误:checkbox.addEventListener is not a function和a想不出为什么会发生这种情况。

r1wp621o

r1wp621o1#

由于**querySelectorAll()**返回了一个元素数组,而您试图将事件附加到该数组,因此您会得到该错误,否则您应该循环遍历该数组,将更改事件附加到其中的每个元素,例如:

//Loop through the array elements and attach the event
for (var i = 0; i < checkbox.length; i++) {
  checkbox[i].addEventListener("change", checkedOrNot);
}

//Define separate function
function checkedOrNot() {
  var isChecked = this.checked;

  if (isChecked) { //checked
    console.log('checked');
  } else { //unchecked
    console.log('unchecked');
  }
}

霍普这有帮助。
x一个一个一个一个x一个一个二个x

ni65a41a

ni65a41a2#

// foreach循环复选框并调用更改函数

checkbox.forEach(checkbox => {
  checkbox.addEventListener("change", checkboxCheck);
});

function checkboxCheck() {
  var is_checked = this.checked;

  if (is_checked) { //checked
      console.log('checked');
  } else { //unchecked
     console.log('unchecked');
  }

}

相关问题