У меня возникла проблема со следующим кодом, который выбирает все флажки в строке на основе щелчка «Выбрать все». Проблема в том, что я должен дважды щелкнуть каждую кнопку, если некоторые флажки уже проверены, чтобы изменить их состояние. Я хотел бы сделать это одним щелчком мыши на каждой кнопке независимо от того, выбраны ли флажки или нет. Есть ли простой способ сделать это? Спасибо!Javascript: Выбрать все флажки по имени класса
<form name="editview">
<input type="checkbox" id="edit_1" name="check1" class="edit">
<input type="checkbox" id="edit_2" name="check2" class="edit" disabled="disabled" checked="checked">
<input type="checkbox" id="edit_3" name="check3" class="edit" disabled="disabled">
<input type="checkbox" id="edit_4" name="check4" class="edit">
<input type="button" class="button" value="Select All" onclick="CheckUncheckAllAndExcludeDisabledByClass(this,'edit')" title="Select all: items.">
<input type="checkbox" id="view_5" name="check5" class="view">
<input type="checkbox" id="view_6" name="check6" class="view" disabled="disabled" checked="checked">
<input type="checkbox" id="view_7" name="check7" class="view" disabled="disabled">
<input type="checkbox" id="view_8" name="check8" class="view">
<input type="button" class="button" value="Select All" onclick="CheckUncheckAllAndExcludeDisabledByClass(this,'view')" title="Select all: items.">
</form>
checked = true;
function CheckUncheckAllAndExcludeDisabledByClass(theElement,theCheckBoxClass) {
var checks = document.querySelectorAll('.' + theCheckBoxClass);
for (var i = 0; i < checks.length; i++) {
var check = checks[i];
if (!check.disabled) {
check.checked = checked;
}
}
checked = !checked;
}
В тегах у вас есть JQuery, что сделало бы его намного проще выполнить свою задачу. Хотя из вашего кода кажется, что вы пытаетесь реализовать с помощью ванильного JavaScript. Если это то, что вам нужно, вы должны удалить тег jquery. – martynasma
Просто используйте этот плагин https://github.com/metallurgical/jquery-metal-checkAll –
FYI ваш JSFiddle будет работать нормально, если вы измените объявление функции на 'uncheckAll = function (div) {' – ahoffner