It's easier if you use either a common class or some dataset element. You can just just ask the browser to give you all of them using document.querySelectorAll
. You can then use any CSS selector
function checkOneOfGroup(selector, checkedId) {
document.querySelectorAll(selector).forEach((element) => {
element.checked = element.id === checkedId;
});
}
const selector = "input[type=checkbox].group1";
function handleChange(element) {
checkOneOfGroup(selector, element.target.id);
}
document.querySelectorAll(selector).forEach((element) => {
element.addEventListener('change', handleChange);
});
checkOneOfGroup(selector, 'apple'); // start with apple checked
<input type="checkbox" class="group1" id="orange"><label for="orange">orange</label>
<input type="checkbox" class="group1" id="apple"><label for="apple">apple</label>
<input type="checkbox" class="group1" id="banana"><label for="banana">banana</label>
<input type="checkbox" class="group1" id="pear"><label for="pear">pear</label>
<input type="checkbox" class="group1" id="peach"><label for="peach">peach</label>
using a dataset element instead
function checkOneOfGroup(selector, checkedId) {
document.querySelectorAll(selector).forEach((element) => {
element.checked = element.id === checkedId;
});
}
const selector = "input[type=checkbox][data-foo=group1]";
function handleChange(element) {
checkOneOfGroup(selector, element.target.id);
}
document.querySelectorAll(selector).forEach((element) => {
element.addEventListener('change', handleChange);
});
checkOneOfGroup(selector, 'apple'); // start with apple checked
<input type="checkbox" data-foo="group1" id="orange"><label for="orange">orange</label>
<input type="checkbox" data-foo="group1" id="apple"><label for="apple">apple</label>
<input type="checkbox" data-foo="group1" id="banana"><label for="banana">banana</label>
<input type="checkbox" data-foo="group1" id="pear"><label for="pear">pear</label>
<input type="checkbox" data-foo="group1" id="peach"><label for="peach">peach</label>
You could also just surround them in some other element and use that as a selctor
function checkOneOfGroup(selector, checkedId) {
document.querySelectorAll(selector).forEach((element) => {
element.checked = element.id === checkedId;
});
}
const selector = "#fruits input[type=checkbox]";
function handleChange(element) {
checkOneOfGroup(selector, element.target.id);
}
document.querySelectorAll(selector).forEach((element) => {
element.addEventListener('change', handleChange);
});
checkOneOfGroup(selector, 'apple'); // start with apple checked
<div id="fruits">
<input type="checkbox" id="orange"><label for="orange">orange</label>
<input type="checkbox" id="apple"><label for="apple">apple</label>
<input type="checkbox" id="banana"><label for="banana">banana</label>
<input type="checkbox" id="pear"><label for="pear">pear</label>
<input type="checkbox" id="peach"><label for="peach">peach</label>
</div>