排他処理用にグルーピングをする属性が必要です。
以下サンプルではカスタムデータで処理していますが、場合によってはクラスなどでもよいでしょう
片方を選ぶともう片方が選べなくなる
javascript
1<script>
2document.addEventListener('change',e=>{
3 const t=e.target;
4 if(t.matches('[type=checkbox][data-unique]')){
5 document.querySelectorAll(`[data-unique="${t.dataset['unique']}"]`).forEach(x=>{
6 if(x!==t) x.disabled=t.checked;
7 });
8 }
9});
10
11</script>
12
13<label><input type="checkbox" data-unique="1">りんご</label>
14<label><input type="checkbox" data-unique="1">みかん</label>
15<label><input type="checkbox" data-unique="2">てすと1</label>
16<label><input type="checkbox" data-unique="2">てすと2</label>
17<label><input type="checkbox" data-unique="2">てすと3</label>
18<label><input type="checkbox">ぶどう</label>
19<label><input type="checkbox">かき</label>
20
片方が選ばれている状態でもう片方を選ぶと、元のチェックが外れる(ラジオボタン的)
javascript
1<script>
2document.addEventListener('change',e=>{
3 const t=e.target;
4 if(t.matches('[type=checkbox][data-unique]')){
5 document.querySelectorAll(`[data-unique="${t.dataset['unique']}"]`).forEach(x=>{
6 if(x!==t) x.checked=false;
7 });
8 }
9});
10</script>
11<label><input type="checkbox" data-unique="1">りんご</label>
12<label><input type="checkbox" data-unique="1">みかん</label>
13<label><input type="checkbox" data-unique="2">てすと1</label>
14<label><input type="checkbox" data-unique="2">てすと2</label>
15<label><input type="checkbox" data-unique="2">てすと3</label>
16<label><input type="checkbox">ぶどう</label>
17<label><input type="checkbox">かき</label>
18