Программный контроль всех флажков не работает должным образом, когда какой-либо из целевых флажков отмечен или снят вручную. У меня есть два метода, в которых каждый будет проверять все флажки, а другие не будут проверять все флажки
Я назвал их selectAll и unSelectall. когда selectAll запускается, он будет проверять все флажки, но при запуске unSelectall он отменяет все флажки, но в чем проблема, когда вы проверяете/снимаете галочку с любым из целевых флажков, а затем вы нажимаете checkall или снимаете галочку, вручную /unchecked флажки не работают. вот рабочий код на скрипке
function selectAll() {
const checkboxes = document.querySelectorAll('.myCheck');
let i = 0;
while(i < checkboxes.length) {
checkboxes[i].setAttribute("checked", "checked");
i++;
}
}
function unSelectAll() {
const checkboxes = document.querySelectorAll('.myCheck');
let i = 0;
while(i < checkboxes.length) {
checkboxes[i].removeAttribute("checked", "");
i++;
}
}
Вместо setAttribute
и removeAttribute
используйте свойство прямого checked
function selectAll() {
const checkboxes = document.querySelectorAll('.myCheck');
let i = 0;
while (i < checkboxes.length) {
checkboxes[i].checked = true;
i++;
}
}
function unSelectAll() {
const checkboxes = document.querySelectorAll('.myCheck');
let i = 0;
while (i < checkboxes.length) {
checkboxes[i].checked = false;
i++;
}
}
демонстрация
<!DOCTYPE html>
<html>
<body>
All:
<input onclick="selectAll();" type="checkbox" id="all"> uncheckAll:
<input onclick="unSelectAll();" type="checkbox" id="all">
<br/> ckbx1:
<input type="checkbox" class="myCheck"> ckbx2:
<input type="checkbox" class="myCheck"> ckbx3:
<input type="checkbox" class="myCheck"> ckbx4:
<input type="checkbox" class="myCheck">
<p>checl all and uncheck all</p>
<script>
function selectAll() {
const checkboxes = document.querySelectorAll('.myCheck');
let i = 0;
while (i < checkboxes.length) {
checkboxes[i].checked = true;
i++;
}
}
function unSelectAll() {
const checkboxes = document.querySelectorAll('.myCheck');
let i = 0;
while (i < checkboxes.length) {
checkboxes[i].checked = false;
i++;
}
}
</script>
</body>
</html>
all
и uncheckAll
флажок Все проверены, вы должны продолжить. Рассмотрим случай: 1. Выберите отметить все. 2. Выберите unchckall. (Теперь ничего не будет проверено, кроме флажков checkall и uncheckall). 3. Теперь снимите флажок галочки. (будут установлены все флажки. Так как onclick запускается независимо от состояния выбранного поля, он выполняет операцию)
.checked
. Но вам не нужно 2 функции. Вы можете создать одну функцию, которая будет принимать значениеtrue
для выбора иfalse
для отмены выбора и обрабатывать соответственно. Обновлена скрипка . Кроме того,id
элемента должен быть уникальным.