検索や入力フォームで使用するチェックボックスで、全選択・全解除が複数ある場合のサンプルです。
html
<form>
<div>
<label><input id="checks0" class="" type="checkbox" value="千葉県" onClick="AllChecked(this.id);">千葉県</label>
<label><input class="checks0" type="checkbox" name="name" value="千葉県知事" onClick="DisChecked('checks0');">千葉県知事</label>
<label><input class="checks0" type="checkbox" name="name" value="千葉市長" onClick="DisChecked('checks0');">千葉市長</label>
</div>
<div>
<label><input id="checks1" class="" type="checkbox" value="千葉市" onClick="AllChecked(this.id);">千葉市</label>
<label><input class="checks1" type="checkbox" name="ku" value="中央区" onClick="DisChecked('checks1');">中央区</label>
<label><input class="checks1" type="checkbox" name="ku" value="花見川区" onClick="DisChecked('checks1');">花見川区</label>
<label><input class="checks1" type="checkbox" name="ku" value="稲毛区" onClick="DisChecked('checks1');">稲毛区</label>
<label><input class="checks1" type="checkbox" name="ku" value="若葉区" onClick="DisChecked('checks1');">若葉区</label>
<label><input class="checks1" type="checkbox" name="ku" value="緑区" onClick="DisChecked('checks1');">緑区</label>
<label><input class="checks1" type="checkbox" name="ku" value="美浜区" onClick="DisChecked('checks1');">美浜区</label>
</div>
</form>
ポイント
全選択のidと、個別選択するclassを同じ名称にします。
全選択するものに挿入するonClick
onClick="AllChecked(this.id);"
個別選択するもの挿入するonClick。引数に、全選択のid名を入れます。
onClick="DisChecked('checks1');"
JavaScript
<script>
// onClick="AllChecked(this.id);"を記載したidと同じ名前のclaaaのあるチェックボックス全てにチェックが付く
function AllChecked(checks){
var all = document.getElementById(checks).checked;
var checks = document.getElementsByClassName(checks);
var checksArray = Array.prototype.slice.call(checks);
for (var i=0; i<checksArray.length; i++){
checksArray[i].checked = all;
}
}
// 一つでもチェックを外すと「onClick="DisChecked('checks1');"」の引数で指定したidのチェック外れる
function DisChecked(checks){
// console.log(checks);
var all = document.getElementById(checks);
var checks = document.getElementsByClassName(checks);
var checksArray = Array.prototype.slice.call(checks);
var checksCount = 0;
for (var i=0; i<checksArray.length; i++){
if(checksArray[i].checked == false){
all.checked = false;
}else{
checksCount += 1;
if(checksCount == checks.length){
all.checked = true;
}
}
}
}
</script>
このままコピペしてOKです。

