Как написать цикл, который будет искать вглубь по элементам?
Друзья, я столкнулся со следующей проблемой: при создании цикла, который должен искать чекбоксы в листе, у меня не получается вернуть результат из функции. При переборе циклом for я обращался к родительскому элементу в котором лежит блок с чекбоксом, после чего забирал значение .prop(''checked') из инпута и записывал в переменную, заранее объявленную в этой же функции, и писал return переменнаяХранящаяРезультат, но увы ни к чему это не привело.
let checkbox-item = $('.files-item')
function isChecked() {
let checkedItems = 0;
for (let i = 0; i <checkbox-item.length; i++) {
if ($(checkboxList[i]).find('input').prop('checked')) {
checkedItems++;
console.log('Элемент с чекбоксом ' + checkedItems);
console.log('Порядковый номер ' + i);
if ($(checkboxList[checkboxList.length - 1])) {
return checkedItems
}
}
}
}
function isChecked() {
let checkedItems = 0;
for (let i = 0; i <checkboxList.length; i++) {
if ($(checkboxList[i]).find('input').prop('checked')) {
checkedItems++;
console.log('Элемент с чекбоксом ' + checkedItems);
console.log('Порядковый номер ' + i);
if ($(checkboxList[checkboxList.length - 1])) {
return checkedItems
}
}
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="files-item">
<div class="files-item__checkbox">
<div class="checkbox">
<input type="checkbox" id="1">
<label for="1">
</label>
</div>
</div>
</div>
Ответы (1 шт):
Исходя из задания, будет коррентно возвращать массив выбранные элементы
Самый простой вариант
$('.files-item input:checked') - вернет все выбранные чекбоксы внутри класса files-item.
Или вариант с перебором всех элементов
function isChecked() {
const checkboxes = $('.files-item').find('input[type="checkbox"]');
const checkedCheckboxes = [];
for (let i = 0; i < checkboxes.length; i++) {
const currentCheckbox = checkboxes[i];
if($(currentCheckbox).prop("checked")) {
console.log('Элемент с чекбоксом ' + currentCheckbox);
console.log('Порядковый номер ' + $(currentCheckbox).attr('id'));
checkedCheckboxes.push(currentCheckbox);
}
}
return checkedCheckboxes;
}
Второй перебор
function isChecked() {
const checkboxes = $('.files-item').find('input[type="checkbox"]');
const checkedCheckboxes = [];
Array.from(checkboxes).forEach((currentCheckbox) => {
if($(currentCheckbox).prop("checked")) {
console.log('Элемент с чекбоксом ' + currentCheckbox);
console.log('Порядковый номер ' + $(currentCheckbox).attr('id'));
checkedCheckboxes.push(currentCheckbox);
}
});
return checkedCheckboxes;
}