2017-11-13 5 views
1

こんにちは私はconsole.logをチェックしようとしています。チェックボックスがチェックされているかどうかをチェックします。返されないaddEventListenerは関数ではありません

私は次のエラーを取得しておく
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'); 
    } 
}); 

Uncaught TypeError: checkbox.addEventListener is not a function and a cant figure out why this is happening.

+2

'querySelectorAll'アレイ.. – Keith

+0

querSelectorAllの配列を返すを返します。配列をループしてすべての項目にリスナーを追加する必要があります。または、イベントの委任を使用してください。 –

+0

'querySelectorAll'はNodeListを返します。ある時点でnodeListに含まれている各ノードにリスナーを追加する場合は、https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Specifications – myf

答えて

2

あなたは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'); 
    } 
} 

これは役立ちます。

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

 
for (var i = 0; i < checkbox.length; i++) { 
 
    checkbox[i].addEventListener("change", checkedOrNot); 
 
} 
 

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

 
    if (isChecked) { //checked 
 
    console.log('checked'); 
 
    } else { //unchecked 
 
    console.log('unchecked'); 
 
    } 
 
}
<div class="customer-club-widget__gender__categories"> 
 
    <input type="checkbox" class="form__input-checkbox" /> A 
 
    <br> 
 
    <input type="checkbox" class="form__input-checkbox" /> B 
 
    <br> 
 
    <input type="checkbox" class="form__input-checkbox" /> C 
 
    <br> 
 
    <input type="checkbox" class="form__input-checkbox" /> D 
 
</div>

関連する問題