#javascript #jquery #firebase-realtime-database
#javascript #jquery #firebase-realtime-база данных
Вопрос:
Прежде чем вы скажете, что это дубликат, я уже просмотрел несколько ответов на тот же вопрос, но, похоже, ни один из них не решает мою проблему. У меня есть динамически созданная таблица из firebase. Работает нормально, и все отображается так, как должно, но у меня была идея добавить цвет к тексту в зависимости от того, собираются ли они достичь своей цели. Когда я попытался добавить оператор If / Else, он просто отображает первую таблицу в цвете, а все остальное — белым (это цвет шрифта по умолчанию).
salesBySold.on('value', function (snapshot) {
snapshot.forEach(function (childSnapshot) {
var key = childSnapshot.key;
var childData = childSnapshot.val();
let dayDividedByMonth = current_date/days_in_month;
let tracking_sold_math = childData.cars_sold/dayDividedByMonth;
if (tracking_sold_math < childData.goal) {
$('#cars_sold').addClass('red-text');
} else {
$('#cars_sold').addClass('green-text')
};
$('#salesperson_tbody').append(`
<tr>
<td>${childData.name}</td>
<td id='cars_sold'>${childData.cars_sold}</td>
<td>${childData.goal}<td>
</tr>
`);
});
});
Итак, это мой код, и он просто добавляет цветной текст к первому, но все остальные по-прежнему имеют цвет по умолчанию. Я хотел, чтобы все они были правильно окрашены
Комментарии:
1. кажется, вы пытаетесь добавить класс к элементу, который еще не существует.
2. Да, у меня это было заранее, но, должно быть, я изменил его обратно, поскольку он все еще не работал, поскольку я просто скопировал и вставил свой текущий код для этого вопроса.
Ответ №1:
поскольку вы устанавливаете класс id=»cars_sold» в цикле, это нормально, но это добавит класс ко всем ранее добавленным td, поэтому для решения вы должны сделать это
salesBySold.on('value', function (snapshot) {
snapshot.forEach(function (childSnapshot) {
var key = childSnapshot.key;
var childData = childSnapshot.val();
let dayDividedByMonth = current_date/days_in_month;
let tracking_sold_math = childData.cars_sold/dayDividedByMonth;
var cls='';
if (tracking_sold_math < childData.goal) {
cls='red-text';
} else {
cls='green-text';
};
$('#salesperson_tbody').append(`
<tr>
<td>${childData.name}</td>
<td id='cars_sold' class="${cls}">${childData.cars_sold}</td>
<td>${childData.goal}<td>
</tr>
`);
});
});
Комментарии:
1. Спасибо, у меня был оператор if / else заранее, но я, должно быть, изменил его обратно. Я не подумал о классе var, хотя! Это довольно умно, еще раз спасибо