Не просматривайте все входные данные, циклически проходите по строкам таблицы и обрабатывайте входные данные в каждой строке.В следующем коде предполагается, что управляющий флажок для строки находится в первом входном сигнале, найденном в строке, и что для всех других флажков в строке, к которой применяется эта функция, будет установлен класс «autocheck»;Я оставлю вам возможность изменить это при необходимости для вашего конкретного случая (например, вам может понадобиться проверить, type=="checkbox"
).
Я не проверял это, но этого должно быть достаточно дляпродолжайте.
function checkAll(){
var _rows = document.getElementById("yourTableID").rows;
var i,
j,
isChecked,
inputs;
for (i=0; i < _rows.length; i++) {
inputs = _rows[i].getElementsByTagName("input");
isChecked = inputs[0].checked;
for (j=1; j < inputs.length; j++) {
if (inputs[j].className == "autocheck") {
inputs[j].checked = isChecked;
}
}
}
}
ОБНОВЛЕНИЕ: только что заметил в ваших комментариях, что вы, кажется, запускаете эту функцию из onclick
контрольных флажков.Если это так, то вы можете передать ссылку на этот флажок в вашу функцию, а затем обработать только строку, в которой она находится, следующим образом:
<input ... onclick="checkAll(this);" ...>
function checkAll(cb){
var _row = cb.parentNode.parentNode,
j,
isChecked = cb.checked,
inputs;
inputs = _row.getElementsByTagName("input");
for (j=0; j < inputs.length; j++) {
if (inputs[j].className == "autocheck") {
inputs[j].checked = isChecked;
}
}
}
Google "mdc parentnode" для получения дополнительной информации.