2016-02-05 62 views
0

显示隐藏的div如上所述,默认情况下,div使用CSS隐藏。我有这个脚本到目前为止:试图根据今天的日期第一个JS项目

<script type="text/javascript"> 
    function makeDate(){ // makes the date and defines "today" variable for data-display-before" and "data-display-after" to work. also logs todays date to console for troubleshooting 
    var now = new Date(); 
    var day = now.getDate(); 
    var month = now.getMonth()+1; 
    today = month+"-"+day; 
    var x = document.querySelectorAll(".date-display-after").getAttribute(); 
    var y = document.querySelectorAll(".date-display-before").getAttribute(); 
    console.log("the date today in MM/DD format is "+today); //for troubleshooting 

    if (today >= x && today <= y){ //the juicy bit 
     document.getElementById(".hidden").style.display = 'block'; 
    } 
} 
    //setInterval("makeDate()", 3000); 
</script> 

我怀疑这是行不通的,因为我不能比较整数与字符串?无论是这个问题还是语法问题。我试图遵循一个答案,我曾在一个相关的帖子,上面写着“有问题的两个属性添加到的div像数据显示后数据显示之前,例如:

<div id="valentines" 
    data-display-after="2016-02-14 00:00:00" 
    data-display-before="2016-02-15 00:00:00">...Hide these divs initially (with CSS). 

在页面负载转换当前日期(新日)到上述格式。

对于文件,有数据显示,前属性的每个元素(你需要querySelectorAll),比较属性值(的getAttribute)和

if currentDate >= data-display-after && currentDate <= data-display-after, 
then show the element." 

我希望得到一些关于如何最好地处理变量的建议ES。继承人的HTML是什么样子:

<body onload="makeDate()"> 
<div class="occasion" id="hidden" date-display-after="02-01" date-display-before="02-15"> 
<div class="textbox"><h5>Valentines day</h5><p><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime nobis non veritatis quaerat eveniet, necessitatibus, assumenda alias in voluptatum eius voluptate beatae doloribus sed rem officiis ullam perspiciatis earum, aliquam.</span> 
<span>Incidunt officiis eligendi quisquam debitis! Vitae voluptates cum architecto culpa voluptatum nam excepturi laborum. Omnis quasi aut ea explicabo, porro quisquam reiciendis animi, mollitia, et error earum tempora, ad asperiores.</span> 
<span>Commodi necessitatibus et atque odio eos, itaque quaerat, unde animi, provident deserunt quisquam fugit porro fugiat blanditiis quibusdam culpa quo deleniti molestiae numquam dignissimos alias! Inventore libero incidunt, alias possimus!</span></p></div> 
<div class="picture"></div> 

的DIV应该是今天可见的,因为控制台输出:

the date today in MM/DD format is 2-5 
+0

有趣的问题。我看到的一个问题是,你可能意味着使用querySelectorAll(“。occasion”)来获取所有场合,然后每次使用getAttribute获取after和before日期 - 因为你的x和y变量是空的。 –

+0

'document.getElementById(“。hidden”)'不正确。它应该是'document.getElementById(“隐藏”)'。 –

+0

感谢Jason的回复,我编辑了上面的代码,仍然没有运气。 –

回答

1

如果我理解正确,时间计算不被看到用户,那么为什么你需要将所有内容转换为MM/DD格式?这将是更容易的开始和结束日期转换为次,并比较他们现在

//Get current time 
 
var d = new Date(); 
 
//get year 
 
var y = d.getFullYear(); 
 
//Convert to milliseconds 
 
var n = d.getTime(); 
 

 
//Convert dates to date objects 
 
var x = y + '-01-14T00:00:00'; 
 
var s = new Date(x); 
 
var y = y + '-02-15T00:00:00'; 
 
var e = new Date(y); 
 

 
//Convert to milliseconds 
 
var start = s.getTime(); 
 
var end = e.getTime(); 
 

 
//compare 
 
if (n >= start && n <= end) { 
 
    console.log('show hidden div'); 
 
}

+0

建议你好,谢谢你回来。我正在转换为MM/DD,因为我想确保代码在2017年和2018年等是正确的......你认为这是可能的吗? –

+0

getTime()为您提供任何日期/时间的绝对数字,等于1970年1月1日以来的毫秒数。仅比较这些数据比转换为MM/DD更简单。 – sideroxylon

+0

这个问题是我有6个div想要展示,他们每个人都在一年中的某个特定时间,我也需要这个代码在明年和之后工作。 –