Эта функция переключает все флажки в заданном столбце таблицы HTML при установке или снятии флажка.
function GlobalCheckboxSwitch0(checkboxID, tableID)
{
if ($(checkboxID).is(':checked'))
{
$('#table0 input[type=checkbox]').each(function ()
{
$(this).prop("checked", true);
});
}
else
{
$('#table0 input[type=checkbox]').each(function ()
{
$(this).prop("checked", false);
});
}
}
Такой вызов работает только для таблица0:
<input type = "checkbox" id = "selectall0" onClick = "GlobalCheckboxSwitch0('#selectall0', '#table0')">
Проблема в том, что таблица0 жестко запрограммирован в функции.
С помощью второго параметра tableID я бы хотел, чтобы он работал для любого идентификатора таблицы.
selectall0 - идентификатор флажка.
Попытка сослаться на параметр tableID следующим образом:
$('$(tableID) input[type=checkbox]')
дает синтаксическую ошибку.
Что мне следует изменить в способе обращения к tableID?
Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если быть точным, это синтаксическая ошибка селектора jQuery - на самом деле это не синтаксическая ошибка JavaScript.
Вам нужно изучить конкатенацию, что означает объединение строк и переменных / выражений.
В его нынешнем виде ...
$('$(tableID) input[type=checkbox]')
... исполнится буквально. Другими словами, вы говорите jQuery найти элемент, название тэга которого равен tableID.
Вместо этого вам нужно объединить формульную и динамическую части селектора jQuery. Конкатенация в JavaScript выполняется через +.
$('#'+tableID+' input[type=checkbox]') //<-- note #
Каким-то образом это дает: Неперехваченная ошибка: синтаксическая ошибка, нераспознанное выражение: $ (## table0) input [type = checkbox]
Ленивый с моей стороны. Отредактировано.
Используйте селектор tableID так же, как для checkboxID вместе с find().
Вы также можете пропустить if и each и сделать следующее:
function GlobalCheckboxSwitch0(checkboxID, tableID) {
var allChecked = $(checkboxID).is(':checked');
$(tableID).find('input[type=checkbox]').prop('checked', allChecked );
}
jQuery сделает each внутренне
Я бы переименовал параметр tableSelector, чтобы избежать путаницы, поскольку вы включаете #. Вы можете отправить 'table.selected' или любой другой селектор, на самом деле это не просто идентификатор. То же самое с checkboxID ...
Необходимо избавиться от
()в селекторе, а OP уже проходит в#