2017-04-06 3 views
0

私は特定の数のdivを持つHTMLページを持っており、各divの中に1つのチェックボックスもあります。javacriptで 'checkbox input tags'の数を取得

さんが言ってみましょう:

<div class="yea" id="div1"><input type="checkbox" class="heh" id="chk1">YEAHEH1!</div> 
<div class="yea" id="div2"><input type="checkbox" class="heh" id="chk2">YEAHEH2!</div> 
<div class="yea" id="div2"><input type="checkbox" class="heh" id="chk3">YEAHEH3!</div> 

は今、私はそれらのチェックボックスをループしたいとJSで確認されている1参照。私はここでhttp://www.randomsnippets.com/2008/05/15/how-to-loop-through-checkboxes-or-radio-button-groups-via-javascript/のチュートリアルを見つけましたが、フォーム要素を使用してこれらのチェックボックスをすべて使用し、form.elements.lengthを使用して番号を取得しますが、プロジェクトフォームは必要ありません。

誰でも?ありがとう!

+1

'document.querySelectorAll(」いや入力[タイプ= "チェックボックス"]]:チェックする ')を使用します。length' – Tushar

+0

おかげTusharを、これは' doesnの仕事。私はあなたのコードをdocument.querySelectorAll( '.hh input [type = "checkbox"]:checked')に変更しました。 (.yeaを.hehに変更してaを削除しました))を作成し、https://jsfiddle.net/chenhang91/tzeek1en/3/という手伝いをしました。何かが間違っていることを確認できますか? – Hang

+0

@Tushar https://jsfiddle.net/chenhang91/tzeek1en/7/ – Hang

答えて

0

CSSセレクタ'.yea input[type=checkbox]:checked'で使用Document.querySelectorAll()そうのように:

document.querySelectorAll('.yea input[type=checkbox]:checked'); 

これが確認され、入力のコレクションをNodeListを返します。

例:

document.getElementById('submit').addEventListener('click', function() { 
 
    var checked = document.querySelectorAll('.yea input[type=checkbox]:checked'), 
 
    i = 0, 
 
    len = checked.length; 
 
    for (i, len; i < len; i++) { 
 
    checked[i].parentNode.classList.add('checked'); 
 
    } 
 
});
.checked { 
 
    color: red; 
 
}
<div class="yea" id="div1"><input type="checkbox" class="heh" id="chk1">YEAHEH1!</div> 
 
<div class="yea" id="div2"><input type="checkbox" class="heh" id="chk2">YEAHEH2!</div> 
 
<div class="yea" id="div2"><input type="checkbox" class="heh" id="chk3">YEAHEH3!</div> 
 

 
<button id="submit">Submit</button>

+0

あなたの答えは私の質問を解決するだけでなく、それらをループするのに役立ちます。ありがとうリッキー! – Hang

+0

あなたは大歓迎です: ')'。 – Ricky

0

次のjavascriptコードをお試しください。

var elementsToCheck = document.getElementsByClassName('heh'); 

for(var i = 0; i < elementsToCheck.length; i++) { 
    if(elementsToCheck[i].checked) { 
    // your code when the checkbox is selected goes here. 
    } 
} 
+0

あなたの応答に感謝しますuser7761868!しかし、このコードは動作しません。あなたの言ってる事がわかります。私はそれをデバッグするjsfiddleを作った:https://jsfiddle.net/chenhang91/tzeek1en/1/ここで見てみたい? – Hang

+0

https://jsfiddle.net/chenhang91/tzeek1en/6/ – Hang

+0

を参照してください。forループは、ドキュメントがロードされたときに1回だけ実行されるため、動作しません。 入力チェックボックスがオンになったとき、つまりチェックボックスでイベントを待機するときに、このループを実行する必要があります。 結果が表示されますか:https://jsfiddle.net/tzeek1en/8/ – user7761868

0

があなたのページの使用中のすべてのチェックボックスのリストを取得するには

document.querySelectorAll('input[type="checkbox"]') 

番号の使用を取得する

0は、すべてのchackedのチェックボックスのリストを取得するには

document.querySelectorAll('input[type="checkbox"]:checked') 
+0

document.querySelectorAll( 'input [type = "checkbox"]:checked')はオブジェクトまたは数値を返しますか? https://jsfiddle.net/chenhang91/tzeek1en/5/ – Hang

+0

これはすべてのチェックボックス要素のリストを返します。番号を取得するには '.length'を使用してください – BiJ

+0

あなたの助けに感謝BiJ!唯一の違いは、document.querySelectorAll( 'input [type = "checkbox"]')を "button click"関数の内部に移動して.lengthを追加したところで動作することです。私はまた、私のフィドルに.lengthを加えました。そして、唯一の違いはこのコード行の位置です。しかし、私はなぜこのボタンを "ボタンクリック"の内側に置くのがうまくいくのか理解できませんでしたが、外側にあるとうまくいきませんでしたか? $(document).ready()はページ全体が読み込まれた後に実行されますが、そうではありませんか?なぜこれが私に言えますか? :D – Hang

関連する問題