У меня есть цикл внутри цикла, например:
var len = bolumlerUnique.length;
function bolumleriGonder() {
for (i = 0; i < bolumlerUnique.length; i++) {
elementBolumler = $("[bolumid = " + bolumlerUnique[i] + "]:checked");
console.info(elementBolumler);
for (j = 0; j < len; j++) {
console.info(elementBolumler[j])
}
}
}
bolumlerUnique это множество --> ["1", "2", "3", "4"]
У меня есть радиовходы и я нахожу элементы с этим кодом
$("[bolumid = " + bolumlerUnique[i] + "]:checked");
Но во втором цикле console.info пишет undefined.
Но elementBolumler определяется как глобальная переменная.



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


const checkboxesIWantToMessWith = [2, 4, 6]
checkboxesIWantToMessWith.forEach(id => {
const checkbox = document.querySelector(`input[bolumid = "${id}"]`)
if (checkbox.checked) {
// Do my stuff
console.info(`checkbox bolumid = "${id}" is checked`)
} else {
// Do other stuff
console.info(`checkbox bolumid = "${id}" is NOT checked`)
}
})<input type = "checkbox" bolumid = "1" checked />
<input type = "checkbox" bolumid = "2" checked />
<input type = "checkbox" bolumid = "3" checked />
<input type = "checkbox" bolumid = "4" />
<input type = "checkbox" bolumid = "5" checked />
<input type = "checkbox" bolumid = "6" checked />in the second loop console.info writes undefined.
Чтобы ответить на вопрос как (почти) представлено: "почему я получаю неопределенность с $()[j]?"
В jquery, если вы попытаетесь получить элемент по индексу, который больше, чем количество элементов в коллекции jquery, вы получите undefined (не массив за пределами, поскольку это не массив), то есть:
var divs = $(".d");
console.info(divs[0])
console.info(divs[1]) // undefined<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "d">d1</div>Проблема связана с:
var len = bolumlerUnique.length;
for (j = 0; j < len; j++) {
Когда вы повторяете
$("[bolumid = " + bolumlerUnique[i] + "]:checked")
в нем будет столько элементов, сколько проверено, которые соответствуют одному id. Так что весьма вероятно, что
elementBolumler.length !== len
Как отмечено в комментариях к вопросу, [bolumid = " + bolumlerUnique[i] + "] — это radio, поэтому он всегда возвращает только один элемент.
Ваша логика для индекса внутреннего цикла len неверна, но неясно, каким он должен быть - возможно:
elementBolumler.length
как в:
function bolumleriGonder() {
for (i = 0; i < bolumlerUnique.length; i++) {
elementBolumler = $("[bolumid = " + bolumlerUnique[i] + "]:checked");
console.info(elementBolumler);
for (j = 0; j < elementBolumler.length; j++) {
console.info(elementBolumler[j])
}
}
}
Убедитесь, что ваша переменная len имеет значение, которое должно работать с вашими кодами.