我试图使用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'
});
}
});
答案 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;大于当前时间。