Цикл JavaScript внутри цикла

У меня есть цикл внутри цикла, например:

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 определяется как глобальная переменная.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
11
80
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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 имеет значение, которое должно работать с вашими кодами.

Другие вопросы по теме