如果日期大于,我在表td上设置css类的脚本有问题。脚本仅在今天工作。如果td中的日期低于一周且大于一周,则其余的ifs应设置类。
$('td:nth-child(7) ').each(function() {
var today = new Date();
var week = new Date();
var dd = today.getDate();
var ddd = today.getDate()+7;
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if(dd<10) {
dd = '0'+dd
}
if(mm<10) {
mm = '0'+mm
}
today = dd + '/' + mm + '/' + yyyy;
if ($(this).text() == today) {
$(this).closest("td").addClass("red");
}
if ($(this).text() < today + 7 && $(this).text() != today ) {
$(this).closest("td").addClass("yellow");
}
if ($(this).text() > today + 7) {
$(this).closest("td").addClass("green");
}
});
答案 0 :(得分:0)
尝试类似
的内容 var displayedDate = new Date($(this).text());
var today = new Date();
if (displayedDate > today.setDate(today.getDate() + 7) {
// here displayed date is posterior to today + 7 days
}
答案 1 :(得分:0)
您正在比较字符串,而不是日期。您应该将单元格中的日期转换为Date
object。
在比较日期的相等性时,您应该使用valueOf()
来避免参考比较。
这是一个有效的例子:
$('td').each(function() {
var today = new Date();
today.setHours(0,0,0,0);
var nextWeek = new Date(today);
nextWeek.setDate(nextWeek.getDate() + 7);
var cellDateParts = $(this).text().split("/");
var cellDate = new Date(cellDateParts[2], parseInt(cellDateParts[1]) - 1, cellDateParts[0]);
if (cellDate.valueOf() === today.valueOf()) {
$(this).closest("td").addClass("red");
} else if (cellDate < nextWeek) {
$(this).closest("td").addClass("yellow");
} else if (cellDate > nextWeek) {
$(this).closest("td").addClass("green");
}
});
.red {
background: red;
}
.yellow {
background: yellow;
}
.green {
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<td>07/07/2017</td>
<td>07/08/2017</td>
<td>23/07/2017</td>
</table>