Задать вопрос
@Sergey750il

Не работает сравнение в цикле?

В консоль вывод элементов массива выходит правильно, но в требуемый цвет при сравнении окрашивается только первый элемент.
var number = $('.ofice .ofice_status').map(function() {
        return $(this).html();
    });
    var number_js = [];

    for (var p = 0, len = number.length; p <= len; p++) {
        if (number[p] == 'Свободен') {
            number_js[p] = $('.ofice:eq(' + p + ')>.ofice_number>a').map(function() {
                    return $(this).html();
                })[0];
               
              
                for (var i = 0, le = rsrGroups.length; i <= le; i++) {
                     // console.log(number_js[p]);
                     // console.log(rsrGroups[i].data("room"));
                     if (number_js[p]==rsrGroups[i].data("room")) {
                          rsrGroups[i].attr('fill','red');
                     }
                }
   
        }
    }
  • Вопрос задан
  • 236 просмотров
Подписаться 1 Оценить 8 комментариев
Решение пользователя Алексей Зуев К ответам на вопрос (3)
Проблема в условии цикла
for (var i = 0, le = rsrGroups.length; i <= le; i++) {

i <= le - нужно оставить только меньше, иначе на i, равном rsrGroups.length, свалится с ошибкой
Ну и верхний цикл тоже лучше только меньше, итерация с 0 идет
В итоге получится
for (var i = 0, len = rsrGroups.length; i < len; i++) {
  if (number_js[p] == rsrGroups[i].data("room")) {
    rsrGroups[i].attr('fill', 'red');
  }
}
Ответ написан