Я пытаюсь создать функцию, которая будет:изменения переменного с функцией OnClick
- пробегает все флажки я проверенные в HTML документе
- только позволяют «checkboxLimit», чтобы проверить (т.е. 4 флажков из 10 могут быть проверены в документе)
- возвращает массив идентификаторов проверяемых флажков (которые я называю CBL)
в настоящее время моя проблема имеет что-то делать с размахомonclick функция.
function getCheckboxes(checkboxLimit) {
// clear cbl
cbl = ['','','',''];
// contstuct list of checkbox tags
inputs = document.getElementsByTagName('input');
var checkboxes = [];
for (var i = 0 ; i < inputs.length ; i++) {
if (inputs[i].type == 'checkbox')
checkboxes.push(inputs[i]);
}
Весь вышеприведенный код является функциональным, но ниже приведен код, в котором я столкнулся с проблемами. Функция, которая выполняется после «onclick», работает хорошо, потому что, если я предупреждаю cbl в функции, она работает, как мне нравится (показано ниже). Однако, как только cbl будет предупрежден после функции onclick, это уже не то же самое.
// construct list of checked checkboxes (limited)
for (var i = 0 ; i < checkboxes.length ; i++) {
// if any checkbox is clicked
checkboxes[i].onclick = function() {
var checkCount = 0;
// run through each of the checkboxes
for (var j = 0 ; j < checkboxes.length ; j++) {
// if index checkbox is checked
if (checkboxes[j].checked == true) {
// add to count
checkCount++;
// if count is above limit, uncheck
// otherwise add to list
if (checkCount > checkboxLimit)
this.checked = false;
else
cbl[checkCount-1] = checkboxes[j].id;
}
}
// alert that displays cbl how I want
alert(cbl);
}
// alert that does not display cbl how I want
alert(cbl);
}
}
Так можно ли каким-то образом преодолеть эту проблему? Я бы предпочел остаться в стороне от JQuery, но все, что может заставить меня иметь функциональный код, будет работать на этом этапе.
Я не могу понять флажки [i] .onclick. Почему это в цикле? Вы пробовали поставить пользовательский класс, например class = 'mycheckbox', и привязать функцию onclick к этому? Цикл с помощью флажков и функция привязки кажутся странными. – sbjumani
Ссылка, как это делается с помощью кнопок. Может также использоваться на флажках. http://stackoverflow.com/questions/13818839/jquery-dynamic-button-how-to-bind-to-exisitng-click-event-by-class – sbjumani
Что вы ожидаете от 'cbl', если оно не показать, как вы хотите? – ShaneQful