Условное изменение форматирования ячеек в таблице, генерируемой циклом
Мое приложение django
генерирует таблицу на основе python
dictionary
"участников". Для этого он использует приведенный ниже код HTML
, в котором есть цикл, проходящий через все *elements*
"участников". Таблица формируется без каких-либо проблем.
Теперь я хочу условно изменить цвет фона колонки со значением "balance" в зависимости от того, равно ли это значение > 0, < 0, или = 0. Для этого я вставил javascript
внизу HTML body
. Но это не дает никакого эффекта. Как можно исправить код?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Participants</title>
</head>
<body>
<h1 id="title">Participants</h1>
<table id="participants_table" border="1">
{% for x in participants %}
<tr>
<td>{{ x.firstName }}</td>
<td>{{ x.lastName }}</td>
<td class="balance">{{ x.balance }}</td>
</tr>
{% endfor %}
</table>
<script>
var balance = document.getElementById('participants_table').getElementsByClassName('balance');
if (balance.innerHTML > 0){
balance.style.backgroundColor='#003F87';
} else if (balance.innerHTML < 0) {
balance.style.backgroundColor='#0033H7';
} else {
balance.style.backgroundColor='#0093H7';
}
</script>
</body>
</html>
Теоретически это должно работать.
<td style=background-color: "{% if x.balance > 0 %}#003F87{% elif
x.balance < 0 %}#0033H7 {%else%)#0093H7{% endif %}">{{ x.balance
}}</td>
Поэтому я использую встроенную стилизацию (не рекомендуется) и условное отображение цвета bg. Если вы используете что-то вроде Bootstrap, то это может быть чище, например, так:
<td class="{% if x.balance > 0 %}bg-primary{% elif x.balance < 0
%}bg-warning{%else%)bg-secondary{% endif %}>{{ x.balance }}</td>