【问题标题】:My jquery if else if statements arent working我的 jquery if else if 语句不起作用
【发布时间】:2014-03-21 07:23:55
【问题描述】:

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

我认为这与语句的性质有关,无论我写的 if else 语句如何,一个都会覆盖另一个。

最后一个 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'
     });
    }
 });

【问题讨论】:

    标签: jquery date if-statement each


    【解决方案1】:

    在 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 天且大于当前时间。

    【讨论】:

    • 谢谢,我确实尝试过这些,但我得到了完全相同的效果 - 一个语句覆盖了其他语句 - 它与过去的时间戳有关吗?
    【解决方案2】:

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

    如果是过去,那么 如果少于 7 天,那么 如果少于 7 天

    首先,注意最后两个条件是相同的。据我了解,最后一个是为未来而存在的吗?如果是这样,请更改您的测试标志并将其转换为 >

    说了这么多,你应该反转 ifses 并最终得到:

    如果在未来那么 // 否则,如果在过去 7 天内,则 // 然后 // 超过 7 天) 结束

    补充说明: — 请将日期存储在局部变量中,以使代码清晰易读且耗电更少; — 首先考虑现在的时间(出于相同的原因),再加上你调用 getTime 的时间,结果会随着时间跨度的变化而变化(它是毫秒,但是……)

    【讨论】:

    • 您好,不太关注您。 “如果是过去,那么如果小于 7 天,那么如果小于 7 天” 代码是从 1 天开始,然后是 7 天,然后是未来日期
    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多