2013-08-26 102 views
1

我需要計算表中的日期是否在5天內,並更新父行的類。我能夠做到這一點(在FF和Chrome中),但由於某種原因,它不適用於IE8。是今天日期5天內的項目日期

表中的某個項目的日期類似「08/28/13」,而TD將具有「時間」類。

$('td:contains("Scheduled")').parents('tr').addClass('scheduled'); 
$("td.time").each(function (index) { 
    var date = $(this).text(); 
    //sep date 
    var year = date.substring(6, 10); 
    var month = date.substring(0, 2); 
    var day = date.substring(3, 5); 
    alert(month + ' ' + day + ', ' + year); 
    //today 
    var d = new Date(); 
    var today = d.getDate(); 

    var m = new Array(); 
    m[0] = "01"; 
    m[1] = "02"; 
    m[2] = "03"; 
    m[3] = "04"; 
    m[4] = "05"; 
    m[5] = "06"; 
    m[6] = "07"; 
    m[7] = "08"; 
    m[8] = "09"; 
    m[9] = "10"; 
    m[10] = "11"; 
    m[11] = "12"; 
    var b = d.getMonth(); 
    var n = parseInt(m[d.getMonth()]); 

    var monthStart = new Date(year, b, 1); 
    var monthEnd = new Date(year, b + 1, 1); 
    var monthLength = (monthEnd - monthStart)/(1000 * 60 * 60 * 24); 

    var nextMonth = n + 1; 
    var dayDiff = 5 - (monthLength - today); 
    if ((monthLength - 5) < today && nextMonth == month && day < dayDiff) { 
     if (!$(this).parents('tr').hasClass('scheduled')) { 
      $(this).parents('tr').addClass('urgent'); 
     }; 
    }; 
    if (n == month && today < day && day <= (today + 5)) { 
     if (!$(this).parents('tr').hasClass('scheduled')) { 
      $(this).parents('tr').addClass('urgent'); 
     }; 
    }; 
}); 
+0

在IE8中有錯誤嗎? –

+0

嘗試在IE7-8中「嚴格使用」,並查看代碼存在問題。 –

+0

http://stackoverflow.com/questions/492994/compare-dates-with-javascript應該給你你需要的比較部分。除此之外,只需獲取字符串MM/dd/yyyy並將其傳遞到'new Date('MM/dd/yyyy')',驗證IE(F12)中的兼容性模式未啓用,然後在IE模式下查看標題 – abc123

回答

1

我在@ abc123評論並得到了5天之間的基於數字時間戳的差異的問題中嘗試瞭解決方案。我也更新了今天的日期。代碼較少。

$('td:contains("Scheduled")').parents('tr').addClass('scheduled'); 
$("td.time").each(function (index) { 
    var date = $(this).text(); 
    var oppTime = date.substring(0, 10); 

    var d = new Date(); 
    var today = d.toJSON(); 
    var t = today.substring(0, 4) + "/" + today.substring(5, 7) + "/" + today.substring(8, 10); 

    var timeStamp_oppDate = new Date(oppTime).getTime(); 
    var timeStamp_thisDay = new Date(t).getTime(); 
    var timeDiff = timeStamp_oppDate - timeStamp_thisDay; 

    if (432000000 >= timeDiff) { 
     if (!$(this).parents('tr').hasClass('scheduled')) { 
      $(this).parents('tr').addClass('urgent'); 
     }; 
    }; 
}); 
+0

+1解決您自己的問題 – abc123

+0

如果這對您有用,請不要忘記接受答案。 –