1

我有下表,我正在尝试找到一种方法,将“突出显示”类添加到具有最近日期/时间的单元格(class="dateRow")。在这种情况下,它将是第四个,其日期是“2013-05-30”。

我尝试了各种选择,但似乎无法让它发挥作用。有人可以给我指路吗,因为我一直在努力解决这个问题,但似乎无法让它发挥作用。

<table>
    <tr class="topRow"> 
        <td>Yes</td>    
        <td class="dateRow">2013-05-23 13:53:20</td>    
        <td class="dateRow">2013-05-21 13:53:21</td>    
        <td class="dateRow">2013-05-29 13:53:22</td>    
        <td class="dateRow">2013-05-30 13:53:23</td>    
        <td class="dateRow">2013-05-29 13:53:24</td>    
        <td class="dateRow">2013-05-28 13:53:19</td>    
        <td>Some Text</td>  
        <td class="dateRow">2013-05-27 13:53:18</td>
    </tr>
</table>

我最近尝试适配的 JS 如下:

<script>
$(window).load(function()
    { 
        $('.thisRow').each(function() {
            var $tds = $(this).children('td'),
                max = null,
                maxIndex = null;

        $tds.each(function() {
            var value = +$(this).text().substr(1);
            if(isNaN(value)) {
             if(!max || value > max) {
                 max = value;
                maxIndex = $(this).index();
             }
        }
        });
    if(maxIndex !== null) {
        $tds.eq(maxIndex).addClass('highlight');
    }
});
    }
);
</script>

我认为需要调整的是 NaN,因为这至少突出了一个单元格,尽管是最后一个单元格。

4

2 回答 2

1

问题不在于您的代码,而在于日期格式。请将其更改为:

<tr class="topRow"> 
    <td>Yes</td>    
    <td class="dateRow">2013/05/23 13:53:20</td>    
    <td class="dateRow">2013/05/21 13:53:21</td>    
    <td class="dateRow">2013/05/29 13:53:22</td>    
    ...

上述格式几乎适用于所有浏览器。有关更多信息,请参阅以下链接:

于 2013-05-30T15:14:12.590 回答
1

您没有将此问题标记为 jQuery,但您显示了一些 jQuery 代码,所以我假设 jQuery 是可以接受的。

在循环所有日期时跟踪您的最大值。诀窍是将您的日期格式转换为可接受的 javascript 日期格式:

$(function () {
    //keep track of max values
    var maxCell = undefined;
    var maxVal = undefined;

    $('.dateRow').each(function () {
        var that = $(this);
        var dt = new Date(that.text().replace(' ', 'T')); //convert to js date
        if (!maxCell || dt > maxVal) {
            //update max values
            maxCell = that;
            maxVal = dt;
        }
    });
    maxCell.addClass('highlight'); //highlight cell with max value
});

工作示例。

于 2013-05-30T15:19:27.423 回答