2010-11-30 49 views
0

jQuery的或JavaScript,基於細節顯示內容顯示內容日期期間的Jquery或Javascript,基於最新幫助

所以我們有像3個日期
12/3/2010
12/11/2010
12/20/2010


股利內容

內容1應當從12/3被顯示到12/11
內容2應顯示從12/11到12/20
和內容3應顯示從12/20後

+0

您的數據是?你從服務器獲取它作爲JSON還是它的一部分(即表)?我想你的數據有一個日期部分... – 2010-11-30 22:05:11

+0

數據將被硬編碼在divs中 – leave1 2010-11-30 22:09:46

回答

0

我創建了一個簡單的代碼。它應該像你想要的那樣工作(如果我已經很好地理解了你的話)。
我知道,我的HTML中沒有文檔類型,並且有一些缺少標籤。我提供的HTML只是一種模板。

<html> 
<head> 
<script type="text/javascript"> 
var date=new Date(); 
var year=date.getFullYear(); 
var month=date.getMonth(); 
var day=date.getDate(); // fixed 
function SetDivContent() { 
    var div=document.getElementById('date_dependent'); 
    if (year==2010 && month==11) { // fixed (the JavaScript months order is 0-11, not 1-12) 
     if (day>=3 && day<11) { // the following content will be displayed 12/03/2010, 12/04/2010, [...], 12/09/2010, 12/10/2010 
      div.innerHTML='content 1'; 
     } 
     else if (day==11 || day==12) { // this one will be displayed 12/11/2010 and 12/12/2010 
      div.innerHTML='content 2'; 
     } 
     else if (day>12) { // this one - 12/13/2010 and later, until the end of December 
      div.innerHTML='content 3'; 
     } 
    } 
    else if (year==2011 && month>=0) div.innerHTML='content 3'; // OPTIONAL - just to ensure that content 3 is displayed even after December. 
} 
</script> 
</head> 
<body onload="SetDivContent()"> 
<div id="date_dependent"></div> 
</body> 
</html> 

請注意,如果你想向用戶隱藏一些數據,如果在指定的日期還沒來,你最好使用一些服務器端出於安全原因。否則,任何用戶都可能只是閱讀該頁面的源代碼。另外請記住,在加載正文時,即每次用戶刷新頁面時,都會執行以下代碼。
編輯:警告:有兩個壞行(我犯了一個錯誤之前)。無論如何,我修復了它們。當前的代碼有效,我測試過了。

1

首先,像其他人一樣,說這整個事情是壞主意,因爲你取決於客戶端機器日期/時間和正確的方法將在服務器端做到這一點。

無論如何,猜你有你的理由,所以這裏是jQuery解決方案。

有這樣的HTML:

<div class="DateDiv"><span class="DateRange">1/1/2010 to 1/1/2011</span>I'll be visible during 2010</div> 
<div class="DateDiv"><span class="DateRange">1/1/2011 to 1/1/2012</span>I'll be visible during 2011</div> 
<div class="DateDiv"><span class="DateRange">1/1/2012 to 1/1/2013</span>I'll be visible during 2012</div> 

把日期範圍跨度內與類「日期範圍」每個DIV中。

下,有這樣的CSS讓它們最初是隱藏的:

<style type="text/css"> 
    .DateRange, .DateDiv { display: none; } 
</style> 

最後,這個腳本:(jQuery的)

<script type="text/JavaScript"> 
$(function() { 
    $(".DateDiv").each(function(index) { 
     var sRange = $(this).find(".DateRange").html(); 
     var arrTemp = sRange.split(" to "); 
     var dtFrom = new Date(arrTemp[0]); 
     var dtTo = new Date(arrTemp[1]); 
     var dtNow = new Date(); 
     if (dtNow >= dtFrom && dtNow <= dtTo) 
      $(this).show(); 
    }); 
}); 
</script> 

測試用例可以在這裏到處亂隨時與它:http://jsfiddle.net/2BHLd/