Как сделать другие чекбоксы неактивными, если 1 из чекбоксов нажат
let checkboxes = document.querySelectorAll('.custom-checkbox')
let filterButton = document.querySelector('.filter__button button')
let filterReset = document.querySelectorAll('.filter__reset button')
for (let checkbox of checkboxes) {
checkbox.addEventListener('click', function () {
if (this.checked == true && this.id == "metro-0") {
filterButton.addEventListener('click', function () {
objectManager.remove(collection)
objectManager.add(collection.features[0])
})
}
else if (this.checked == true && this.id == "metro-1"){
filterButton.addEventListener('click', function() {
objectManager.remove(collection)
objectManager.add(collection.features[1])
})
}
else if (this.checked == true && this.id == "metro-2"){
filterButton.addEventListener('click', function() {
objectManager.remove(collection)
objectManager.add(collection.features[2])
})
}
else if (this.checked == true && this.id == "metro-3"){
filterButton.addEventListener('click', function() {
objectManager.remove(collection)
objectManager.add(collection.features[3])
})
}
else {
objectManager.add(collection);
}
})
}
Ответы (1 шт):
Автор решения: Pr0gramm1st
→ Ссылка
В данном случае можно попробовать вот так:
в условие if (this.checked === true && this.id == "metro-<id_checkbox>") добавить вначале
checkboxes.forEach(checkbox => {
checkbox.disabled = true;
});
this.disabled = false;
Вот только мы дважды бежим по одному и тому же массиву через цикл. Но лучше пока не придумал :)
P.S. И, конечно же, стоит вынести этот повторяющиеся код в функцию