В JavaScript: Как реализовать чередование фонового цвета строк в таблице или списке через условие i % 2 === 0?

Чередование фонового цвета строк (зебра-эффект) — классическая задача в веб-разработке, которая улучшает читаемость таблиц и списков. В JavaScript это удобно реализовать через оператор остатка от деления `%` и условие `i % 2 === 0`.

## Принцип работы

Оператор `%` возвращает остаток от деления. Если индекс `i` чётный, то `i % 2 === 0` вернёт `true`, если нечётный — `false`. Это позволяет применять разные стили к чётным и нечётным строкам.

## Пример для HTML-таблицы

javascript
const rows = document.querySelectorAll(‘table tr’);

rows.forEach((row, i) => {
if (i % 2 === 0) {
row.style.backgroundColor = ‘#f2f2f2’; // чётные строки
} else {
row.style.backgroundColor = ‘#ffffff’; // нечётные строки
}
});

Здесь `querySelectorAll` возвращает все строки таблицы, а метод `forEach` перебирает их с автоматическим индексом `i`, начиная с 0.

## Сокращённая запись через тернарный оператор

javascript
const rows = document.querySelectorAll(‘table tr’);

rows.forEach((row, i) => {
row.style.backgroundColor = i % 2 === 0 ? ‘#f2f2f2’ : ‘#ffffff’;
});

## Пример для списка (ul/li)

javascript
const items = document.querySelectorAll(‘ul li’);

items.forEach((item, i) => {
item.style.backgroundColor = i % 2 === 0 ? ‘#e8f4fd’ : ‘#ffffff’;
});

## Применение CSS-классов вместо inline-стилей

Более правильный подход — добавлять CSS-классы, а не inline-стили:

javascript
const rows = document.querySelectorAll(‘table tr’);

rows.forEach((row, i) => {
row.classList.add(i % 2 === 0 ? ‘row-even’ : ‘row-odd’);
});

CSS:
css
.row-even { background-color: #f2f2f2; }
.row-odd { background-color: #ffffff; }

## Динамическая генерация строк

Если строки создаются динамически из массива данных:

javascript
const data = [‘Иван’, ‘Мария’, ‘Алексей’, ‘Ольга’];
const tbody = document.querySelector(‘tbody’);

data.forEach((name, i) => {
const tr = document.createElement(‘tr’);
tr.style.backgroundColor = i % 2 === 0 ? ‘#f9f9f9’ : ‘#ffffff’;
tr.innerHTML = `

${name}

`;
tbody.appendChild(tr);
});

## Альтернатива через CSS

Стоит знать, что аналогичный эффект можно достичь чисто через CSS без JavaScript:

css
tr:nth-child(even) { background-color: #f2f2f2; }
tr:nth-child(odd) { background-color: #ffffff; }

Однако JavaScript-подход необходим, когда нужно учитывать видимость строк, фильтрацию или динамически изменяемые данные.

## Итог

Условие `i % 2 === 0` — простой и эффективный способ чередовать стили. Используйте CSS-классы вместо inline-стилей для лучшей поддерживаемости кода.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.