根据日期显示/隐藏div

时间:2012-10-29 12:15:37

标签: javascript jquery date

我正在尝试根据日期显示隐藏div并正在尝试使用以下代码:

<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>

window.setInterval(function(){

  var current = new Date();
  var expiry  = new Date("October 29, 2012 12:00:00")
  var expiry2 = new Date("October 30, 2012 12:00:00")

  if(current.getTime()>expiry.getTime()){
    $('#one').hide();
    $('#two').show();
  }

  else(current.getTime()>expiry2.getTime()){
       $('#two').hide();
       $('#three').show();
   }

}, 3000);

$('#one').show(); 
</script>

<div id="one" style="display:none">
<p>content for div #one</p>
</div>

<div id="two" style="display:none">
<p>content for div #two</p>
</div>

<div id="three" style="display:none">
<p>content for div three</p>
</div>

Chrome中的控制台正在抛弃:

Unexpected token {

所以似乎if else语句有语法错误,但对我来说看起来还不错:(

任何人都可以找到我所缺少的东西吗?

5 个答案:

答案 0 :(得分:5)

如果需要,您可以查看工作jsfiddle

问题是您需要else if else (current.getTime() > expiry2.getTime()) {

更新1

使用</div>关闭每个div。 Fiddle也已更新

更新2

你也有我认为的逻辑错误。如果您希望激活条件(current.getTime() > expiry2.getTime()),则它不能作为第一个条件else的{​​{1}}。将(current.getTime()>expiry.getTime())更改为else if,它应该可以使用,但为了进一步优化代码,您可以将第二个if括在第一个if内(考虑到{{1} }}总是小于if

答案 1 :(得分:4)

您在if之后忘了else

else if (current.getTime() > expiry2.getTime()) {

答案 2 :(得分:1)

我稍微操纵了脚本,以便您可以添加该类,并且该项目将在您决定时消失。如果内容已过期,它将显示或隐藏。如果需要,您可以添加更多变量和if语句。

我还在学习JS和jQuery,所以请记住这一点,但一切似乎都按照我想要的方式工作,而且我在控制台中没有错误。

https://jsfiddle.net/medel/qhgrtwzm/2/

<强> HTML

<div class="houdini" style="display:none">
  <p>content for div #one</p>
</div>

JS启用了jQuery 1.8.3

window.setInterval(function() {

  var current = new Date();
  var expiry = new Date("January 19, 2016 17:39:00")

  if (current.getTime() > expiry.getTime()) {
    $('.houdini').hide();

  } else if (current.getTime() < expiry.getTime()) {
    $('.houdini').show();
  }

}, 0);

答案 3 :(得分:0)

Jacob George的回答很棒!发布这个以防万一它可以帮助任何人。我不得不修改UTC / GMT与Internet Explorer兼容的日期/时间格式。我还重新排序逻辑,因此它像瀑布一样触发,只根据到期时间显示一个div,或者如果当前时间在expiry值之前则没有显示div。

<强>使用Javascript:

window.setInterval(function() {

  var current = new Date();
  var expiry = new Date('2015-12-03T02:00:00.000-08:00')
  var expiry2 = new Date('2015-12-04T02:00:00.000-08:00')
  var expiry3 = new Date('2015-12-05T02:00:00.000-08:00')

  if (current.getTime() > expiry3.getTime()) {
    $('#one').hide();
    $('#two').hide();
    $('#three').show();
  } else if (current.getTime() > expiry2.getTime()) {
    $('#one').hide();
    $('#two').show();
    $('#three').hide();
  } else if (current.getTime() > expiry.getTime()) {
    $('#one').show();
    $('#two').hide();
    $('#three').hide();
  }

}, 3000);

答案 4 :(得分:0)

您忘记了else语句中的“ if”。您的if-else块应如下所示:

if (current.getTime() > expiry.getTime()) {
    $('#one').hide();
    $('#two').show();
} else if (current.getTime() > expiry2.getTime()) {
    $('#two').hide();
    $('#three').show();
}