Я столкнулся с проблемой при просмотре таблицы Dynami c - PullRequest
0 голосов
/ 25 мая 2020

У меня есть таблица со следующими элементами. Джек Смит - пример ряда. У меня как таковых несколько строк.

col1    col2   col3      col4   col5     col6       col7       col8
jack    smith  23        Y        Y      error  error_code error_desc

Я формирую эту таблицу динамически, как показано ниже. Мой вопрос касается col6, 7 и 8. В некоторых строках не будет ошибки col6. Я хочу, чтобы col7 и col8 заполнялись error_code и error_des c, только если col6 имеет ошибку. Как я могу этого добиться? Я не знаю, с чего начать? В принципе, я не хочу перебирать col7 и col8, если col6 не имеет значения «error».

    var table = $("<table/>");
    $.each(data, function(rowIndex, r) {
        var row = $("<tr/>");
        $.each(r, function(colIndex, c) {           
            var cellMarkup = "<t"+(rowIndex == 0 ?  "h" : "d")+"/>";
            var cell = $(cellMarkup);
            cell.text(c);
            if(colIndex == 5){   --> I am doing this to flag an error in red. Nothing related to the posed question.
                if( $.trim(c.toLowerCase() ) === "error" ){
                    cell.addClass("error blink");
                }
        }  

            row.append(cell);               
        });
        table.append(row);                              
    });

    return container.html(table);


} 

1 Ответ

0 голосов
/ 25 мая 2020

При заполнении ячеек добавьте значение ячейки при следующих условиях:

  1. Мы находимся в строке заголовка
  2. Мы находимся в столбцах 1-6 (colIndex 0 -5) или
  3. Мы находимся в столбцах 7 или 8, учитывая, что столбец 6 имеет значение «error»

Что мы можем выбрать, используя это:

if( rowIndex == 0 || colIndex < 6 || (colIndex == 6 || colIndex == 7) && r[5].toLowerCase().trim() === "error") {
  row.append(cell);
}

Вот работающая демонстрация (я немного изменил некоторые части вашего кода):

data = [
  ['col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', 'col8'],
  ['jack', 'smith', '23', 'Y', 'Y', 'error', 'error_code', 'error_desc'],
  ['jack2', 'smith2', '232', 'Y2', 'Y2', 'no_error', 'error_code2', 'error_desc2']
];

function makeTable(container) {
  var table = $("<table/>");

  $.each(data, function(rowIndex, r) {
    var row = $("<tr/>");

    $.each(r, function(colIndex, c) {
      var cellMarkup = "<t" + (rowIndex == 0 ? "h" : "d") + "/>";
      var cell = $(cellMarkup);
      cell.text(c);

      if (colIndex == 5) {
        if (c.toLowerCase().trim() === "error") {
          cell.addClass("error blink");
        }
      }

      if (rowIndex == 0 || colIndex < 6 || (colIndex == 6 || colIndex == 7) && r[5].toLowerCase().trim() === "error") {
        row.append(cell);
      }
    });
    table.append(row);
  });

  return container.html(table);
}

makeTable($('.container'))
.error {
  color: red;
}
.blink {
  /* oh god no ;-) */
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...