我想循环遍历表格的元素,如果说5天之后就更改某些CSS元素。日期列将是Thu May 04 13:44:23 EDT 2017
我已经聚集了它应该是这些方面的东西(为了简单起见,如果日期是在今天之前我们说)但是我已经玩了一会儿而且无法得到任何东西去。 jQueryUI库可用。
$(".t-data-grid").find('td').each (function() {
if(Date.parse($(this).text()) < $.datepicker.formatDate('DD, d MM, yy', new Date())) {
$(this).css('color', 'red');
}
});
答案 0 :(得分:2)
这是一个非常简单的solutoin你的问题。代码已注释,应自行解释。
$(".t-data-grid").find('td').each(function() {
// Parse the date
var date = Date.parse($(this).text());
// Create a date to compare against
var fiveDaysAgo = new Date();
// Subtract 5 days from it
fiveDaysAgo.setDate(fiveDaysAgo.getDate()-5);
// Compare to see if the date in the table is older than 5 days
if(date < fiveDaysAgo) $(this).css('color', 'red');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="t-data-grid">
<tr>
<td>Mon May 15 13:44:23 EDT 2017</td>
<td>Sat May 13 13:44:23 EDT 2017</td>
<td>Wed May 10 13:44:23 EDT 2017</td>
<td>Mon May 08 13:44:23 EDT 2017</td>
<td>Sun May 07 13:44:23 EDT 2017</td>
</tr>
</table>
答案 1 :(得分:1)
这一行
if(Date.parse($(this).text()) < $.datepicker.formatDate('DD, d MM, yy', new Date()))
将 Date对象(这是Date.parse()
生成的)与字符串(这是$.datepicker.formatDate()
生成的)进行比较。这不起作用。
将日期对象与日期对象进行比较。
$(".t-data-grid td").each(function () {
var cellDate = Date.parse($(this).text());
if (cellDate < new Date()) {
$(this).css('color', 'red');
}
});
还要确保<td>
包含实际可以解释为日期的文本。并非每个可能的日期表示都由Date.parse()
识别。
在这个问题中,如何从JS日期中减去天数:Subtract days from a date in JavaScript(以及其他许多内容)。