我的jquery if else else if语句不起作用

时间:2014-02-20 11:25:21

标签: jquery date if-statement each

我试图使用jQuery运行if else语句。我相信我已经遵循了正确的结构,但代码并没有运行。

我认为它与语句的性质有关,其中一个语句覆盖另一个语句而不管我写的if else语句。

最后一个if语句有效,但中间一个没有?

这是一个小提琴http://jsfiddle.net/gdcx7/

见下面的代码

 <body>
<div class="thumb-holder">
    <div class="post-title" data-date="Tuesday,14 December 2013" data-time="18:00">
        <img class="featured-thumb" src="http://web-vassets.ea.com/Assets/Richmedia/Image/FeaturedGame/crysis3_298x168.jpg?cb=1334583481" alt="tag test" style="width:250px;height:156px" />
    </div>
</div>
<div class="thumb-holder">
    <div class="post-title" data-date="Tuesday,14 December 2012" data-time="18:00">
        <img class="featured-thumb" src="http://web-vassets.ea.com/Assets/Richmedia/Image/FeaturedGame/crysis3_298x168.jpg?cb=1334583481" alt="tag test" style="width:250px;height:156px" />
    </div>
</div>

<div calss="thumb-holder">
    <div class="post-title" data-date="Tuesday,14 December 2012" data-time="18:00">
        <img class="featured-thumb" src="http://web-vassets.ea.com/Assets/Richmedia/Image/FeaturedGame/crysis3_298x168.jpg?cb=1334583481" alt="tag test" style="width:250px;height:156px" />
    </div>
</div>

<div class="thumb-holder">
    <div class="post-title" data-date="Thursday,27 February 2014" data-time="18:00">
        <img class="featured-thumb" src="http://web-vassets.ea.com/Assets/Richmedia/Image/FeaturedGame/crysis3_298x168.jpg?cb=1334583481" alt="tag test" style="width:250px;height:156px" />
    </div>
</div>


<div class="thumb-holder">
    <div class="post-title" data-date="Thursday,25 December 2014" data-time="18:00">
        <img class="featured-thumb" src="http://web-vassets.ea.com/Assets/Richmedia/Image/FeaturedGame/crysis3_298x168.jpg?cb=1334583481" alt="tag test" style="width:250px;height:156px" />
    </div>
</div>

   $('.post-title').each(function () {
     //1 day old
     if (new Date($(this).data('date')).getTime() < new Date().getTime()) {
      $(this).css({
        opacity: 0.5,
        border: '2px solid blue'
      });
    } 

     //older than 7 days
    else if (new Date($(this).data('date')).getTime() < new Date().getTime() - (24 * 7) * 60 * 60 * 1000) {
    $(this).css({
        opacity: 0.5,
        border: '2px solid red'
     });
    }

    //7 days to go
    else if (new Date($(this).data('date')).getTime() < new Date().getTime() + (24 * 7) * 60 * 60 * 1000) {
     $(this).css({
        opacity: 0.5,
        border: '2px solid green'
     });
    }
 });

2 个答案:

答案 0 :(得分:0)

这是因为你首先做了最少的约束:

如果它过去那么 如果不到7天的话 如果少于7天

Firs toff,注意最后两个条件是相同的。据我所知,最后一个是未来的?如果是,请更改您的测试标志并将其转为&gt;

所有这些说,你应该扭转ifses并最终:

如果将来那么 // 否则,如果在过去的7天内 // 然后 // 7天以上) 端

附加说明: - 请将日期存储在本地变量中,以使代码变得可见并且耗电量更少; - 现在首先考虑时间(出于同样的原因)加上,当你调用getTime时,结果会随着时间的推移而变化(它是毫秒,但是......)

答案 1 :(得分:0)

在if子句中使用以下条件 -

    if (new Date($(this).data('date')).getTime() < new Date().getTime() && new Date($(this).data('date')).getTime() > new Date().getTime() - (24 * 1) * 60 * 60 * 1000)
    {
       -----
    }

休息很好。这将检查测试时间是否属于最后24小时,即1天。否则你的if条件是检查时间戳是否小于现在意味着在此之前的任何时间。

如果条件可能是 -

也是最后的
   else if (new Date($(this).data('date')).getTime() < new Date().getTime() + (24 * 7) * 60 * 60 * 1000 && new Date($(this).data('date')).getTime() > new Date().getTime()) 
   {
      ------
   }

即。如果测试时间少于未来7天&amp;大于当前时间。