2014-02-13 3 views
0

Вот код, я работаю сЕсли оператор не работает внутри setInterval

var d = new Date(), // New Date object 
    M = d.getMonth(), // Month 
    D = d.getDate(), // Day of the month 
    h = d.getUTCHours(), // Hours in 24 hour time 
    m = d.getUTCMinutes(); // Minutes 

    console.log(M+'/'+D+' '+h+':'+m); 

    var href = location.href; 
    if(M == 1 && D == 13 && h >= 21 && m >= 17){ 
     // It is time so lets just go there 
     window.location = href+'live'; 
    }else{ 
     // It isn't already time so lets check every 30 seconds 
     setInterval(checkTime, 1000) 
    } 
    function checkTime() { 
     if(M == 1 && D == 13 && h >= 21 && m >= 17){ 
     // It is time so lets just go there 
     window.location = href+'live'; 
     } 
     console.log('checked time'); 
    } 

Я пытаюсь проверить дату и время, и если это правильная дата и время, вперед на другую страницу , если это не так, то проверяйте каждые несколько секунд (через каждые 1 секунду, но я, вероятно, удалю это до 15 или 30) и снова проверьте, и теперь, когда это правильная дата и время, перейдите на новую страницу.

Операция first if работает, но она, похоже, не выполняет инструкцию if внутри заданной функции интервала.

Возможно, я просто не понимаю, как setInterval работает полностью, но я не вижу проблемы со мной кодом.

+0

Не следует ли снова проверить вызов SetInterval (checkTime, 1000)? – Dalorzo

+0

@ Далорзо нет, это не должно. –

+0

@jCuber, что действительно неправильно! – epascarello

ответ

2

Поскольку вы НЕ обновляете переменные, значения никогда не меняются.

Необходимо каждый раз проверять объект даты. Они не обновляются.

Следующие

d = new Date(), // New Date object 
M = d.getMonth(), // Month 
D = d.getDate(), // Day of the month 
h = d.getUTCHours(), // Hours in 24 hour time 
m = d.getUTCMinutes(); // Minutes 

должно быть в вашем методе checkTime.

+0

Дух, спасибо, должно было понять, что это был долгий день. – Jordan

Смежные вопросы