2013-11-15 5 views
0

나는 오늘을 동적으로 만기일과 비교하여 그에 따라 계산 된 열을 채우는 신호등 시스템을 만들고 있습니다. 코드를 작성할 수 있었지만 사용자가 요구 사항을 변경했습니다. 항목의 오늘 만기일을 나타내는 노란색 신호등 대신, 항목이 다음 5 일 이내에 만기가되는지를 보여주고 싶습니다.자바 스크립트 날짜 빼기

오늘부터 5 일전까지 "else if (fieldDate == 오늘)"에서 변경하고 싶습니다. JavaScript에서 오늘 5 개체를 만드는 적절한 방법을 알 수 없습니다. 도움!

<script type="text/javascript"> 
//<!-- This script searches for calculated fields that are "marked" vith "Due:" and   --> 
//<!-- Create a calculated field in the list with the following formula:     --> 
//<!-- =IF(DueDate="","N/A","Due: "&MONTH(DueDate)&"/"&DAY(DueDate)&"/"&YEAR(DueDate))  --> 
//<!-- The data type returned from this formula is: Date and Time       --> 
// call script 

findDatefields(); 
function findDatefields() { 
    var d = new Date(); 
    var today = new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime(); 
    var arr = document.getElementsByTagName('td'); 
    for (var i = 0; i < arr.length; i++) { 

     // Check if it is "our field" 

     if ((arr[i].className == "ms-vb2") && (arr[i].innerHTML.indexOf("Due:") == 0)) { 
      var sepDate = arr[i].innerHTML.substring(5).split("/", 3); 
      var m = sepDate[0]; 
      var d = sepDate[1]; 
      var y = sepDate[2]; 

      // build the datestring 
      var fieldDate = new Date(y, m - 1, d, 00, 00, 00).getTime(); 
      if (fieldDate > today) { 
       arr[i].innerHTML = "<IMG src='_layouts/images/KPIDefault-0.gif' Title='On track' />"; 
      } 

      else if (fieldDate == today) { 
       arr[i].innerHTML = "<IMG src='_layouts/images/KPIDefault-1.gif' Title='Due today' />"; 

      } 

      else { 
       arr[i].innerHTML = "<IMG src='_layouts/images/KPIDefault-2.gif' Title='Overdue' />"; 
      } 
     } 
    } 
} 

// For it to work in collapsed views 

function ExpGroupRenderData(htmlToRender, groupName, isLoaded) { 
    var tbody = document.getElementById("tbod" + groupName + "_"); 
    var wrapDiv = document.createElement("DIV"); 
    wrapDiv.innerHTML = "<TABLE><TBODY id=\"tbod" + groupName + "_\" isLoaded=\"" + isLoaded + "\">" + htmlToRender + "</TBODY></TABLE>"; 
    tbody.parentNode.replaceChild(wrapDiv.firstChild.firstChild, tbody); 
    findDatefields(); 
} 
</script> 

답변

0

fieldDate와 today가 실제로 long (밀리 초) 일 때 나는 Date 객체로 착각했습니다. 이것은 당신이하고 싶은 일입니다.

else if ((fieldDate - today) <= 432000000) 

그 뒤에 숨은 논리는 나중에 언급됩니다. 그냥 오일에 대해 단일 확인하려면

:

else if (fieldDate == (today + 432000000)); 
+0

나는이 시도를 작동하지 않습니다. 오늘 5 일 전에 변수를 설정하고 그 변수와 비교하고 싶습니다. fieldDate는 오늘 - 5보다 크거나 같아야합니다 (즉, 지난 5 일 이내). – thunderxlt

+0

5 일 이내에 체크인을하도록 업데이트되었습니다. –

+0

5를 다른 곳에서 설정 한 변수로 바꿀 수도 있습니다. –