2014-02-20 3 views
0

Я пытаюсь запустить инструкцию if else с помощью jQuery. Я считаю, что я следовал правильной структуре, но код не работает.Мой jquery if else if statements arent working

Я полагаю, что это имеет какое-то отношение к характеру утверждений, где одно переопределяет другое, независимо от того, что я написал.

Последнее утверждение if 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

Это потому, что вы делаете наименьшее ограничение первое:

, если это в прошлом, то если менее 7 дней, то , если менее 7 дней

Firs toff, обратите внимание, что последние два условия идентичны. Насколько я понимаю, последний из них существует в будущем? Если да, то изменить тестовый знак и включите его>

Все это сказал, вы должны обратить вспять ifses и в конечном итоге с:

если в будущем то // еще, если в последние последние 7 дней затем // затем // старше 7 дней) конец

Дополнительные примечания: - пожалуйста, хранить дату в локальной переменной, чтобы сделать код lisible и меньше энергии голодным; - принять сейчас время первого (по тем же причинам) плюс, ECH время вы вызываете GetTime, изменения результата по времени вызывает промежуток времени (это миллисекунды, но ...)

+0

Привет, не совсем следуйте за вами. _ «если это в прошлом, а затем, если менее чем за 7 дней, а затем, если менее чем за 7 дней» _ Код для осуществления 1 день старый затем 7 дней старые, а затем будущие даты – Kulerbox

0

Использование ниже условия в вашем случае clause-

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 дней & больше, чем текущее время.

+0

Спасибо, я попробовать это, но Я получаю тот же самый точный эффект - одно утверждение переопределяет остальных - имеет ли он какое-то отношение к тому, чтобы иметь прошлые штампы времени? – Kulerbox