5

我正在尝试根据日期显示隐藏 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 语句似乎存在语法错误,但对我来说似乎没问题:(

任何人都可以发现我缺少的东西吗?

4

5 回答 5

6

如果需要,您可以检查工作中的jsfiddle

问题是你需要一个else ifatelse (current.getTime() > expiry2.getTime()) {

更新 1

用 关闭每个 div </div>小提琴也更新了

更新 2

你也有我认为是一个逻辑错误。如果你想(current.getTime() > expiry2.getTime())激活条件,它不能作为else第一个条件(current.getTime()>expiry.getTime())。将 更改else ifif,然后它应该可以工作,尽管为了进一步优化代码,您可以将第二个if包含在第一个中if(考虑到expiry它总是小于expiry2

于 2012-10-29T12:20:25.060 回答
4

你忘了if之后else

else if (current.getTime() > expiry2.getTime()) {
于 2012-10-29T12:16:51.833 回答
2

我已经对脚本进行了一些操作,以便您可以添加类,并且该项目将在您决定的时间消失。如果内容已过期,它将显示或隐藏。如果需要,您可以添加更多变量和 else if 语句。

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

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

HTML

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

启用 jQuery 的 JS 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);
于 2016-01-19T23:53:17.600 回答
0

您忘记了ifelse 语句的内部。您的if-else块应如下所示:

if (current.getTime() > expiry.getTime()) {
    $('#one').hide();
    $('#two').show();
} else if (current.getTime() > expiry2.getTime()) {
    $('#two').hide();
    $('#three').show();
}
于 2020-09-16T06:11:09.860 回答
0

雅各布乔治的回答非常好!发布这个以防它帮助任何人。我必须修改日期/时间格式,以便与 Internet Explorer 兼容 UTC/GMT。我还对逻辑进行了重新排序,使其像瀑布一样触发,仅根据到期时间显示一个 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);
于 2015-12-03T18:26:15.890 回答