@xqesc

Как сравнить данные в таблице и выделить цветом?

Создал таблицу, распределил данные. Но не могу найти или создать скрипт для сравнения данных и выделения цветом.
Нужно сравнивать числа в таблице в контейнере "danie". И цвет меньшего числа менять на зелёный.
<div class="table-price">
  <table>
    <tr>
      <td class="logo-table">
        Общиий анализ крови+ </br>СОЭ с лейкоцитарной формулой
      </td>
      <div class="danie">
        <td>720&#8381</td>
        <td>750&#8381</td>
        <td>720&#8381</td>
        <td>710&#8381</td>
        <td>720&#8381</td>
        <td>750&#8381</td>
      </div>
    </tr>
    <tr>
      <td class="logo-table">
        Общий анализ мочи
      </td>
      <div class="danie">
        <td>720&#8381</td>
        <td>750&#8381</td>
        <td>720&#8381</td>
        <td>710&#8381</td>
        <td>720&#8381</td>
        <td>750&#8381</td>
      </div>
    </tr>
    <tr>
      <td class="logo-table">
        Глюкоза
      </td>
      <div class="danie">
        <td>720&#8381</td>
        <td>750&#8381</td>
        <td>720&#8381</td>
        <td>710&#8381</td>
        <td>720&#8381</td>
        <td>750&#8381</td>
      </div>
    </tr>
  </table>
</div>
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Для выделения используем класс:

.highlight {
  color: green;
}

Элемент с минимальным значением можно найти отсортировав все и взяв нулевой:

document.querySelectorAll('.table-price tr').forEach(n => {
  const td = Array
    .from(n.querySelectorAll('td:not(.logo-table)'))
    .sort((a, b) => parseInt(a.innerText) - parseInt(b.innerText))
    .shift();

  td.classList.add('highlight');
});

Или последовательно перебирая элементы и делая на каждом шаге выбор между текущим и минимальным из уже просмотренных:

document.querySelectorAll('.table-price tr').forEach(n => {
  const td = Array
    .from(n.cells)
    .slice(1)
    .reduce((min, n) => parseInt(min.innerText) < parseInt(n.innerText) ? min : n);

  td.classList.add('highlight');
});

Демо. Представлены оба варианта, второй с небольшим изменением - ищется максимальный.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы