Менять цвет фона за N дней до конкретной даты
Пробовал реализовать уведомление посредством изменения цвета фона, за 2 дня до определенной даты. Но закрашивает все поля, вне зависимости от разности дат. Подскажите, как правильно это сделать?
<table>
<tr><td class='data'>2022-02-25</td></tr>
<tr><td class='data'>2022-02-28</td></tr>
<tr><td class='data'>2022-03-28</td></tr>
</table>
let total = document.querySelectorAll('.data')
total.forEach(function(user) {
let now = moment(new Date());
let end = moment(user.innerText);
let duration = moment.duration(end.diff(now));
let days = duration.asDays();
if(parseInt(days) <= 2){
$('.data').addClass("red")
}
});
Ответы (1 шт):
Автор решения: NoSkill
→ Ссылка
document.querySelectorAll(".data").forEach(function(el) {
// дни = милисекунды / секунды / минуты / часы
let duration = (new Date(el.innerText) - new Date()) / 1000 / 60 / 60 / 24;
if (duration <= 2) {
el.classList.add("red");
}
});
.red {
color: white;
background-color: red;
}
<table>
<tr><td class='data'>2022-02-25</td></tr>
<tr><td class='data'>2022-02-26</td></tr>
<tr><td class='data'>2022-02-27</td></tr>
<tr><td class='data'>2022-02-28</td></tr>
<tr><td class='data'>2122-01-01</td></tr>
<tr><td class='data'>2222-01-01</td></tr>
</table>