如果语句没有在setInterval中运行

时间:2014-02-13 21:19:48

标签: javascript jquery if-statement time 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)并再次检查,如果现在是正确的日期和时间,则转到新页面。

第一个if语句有效,但它似乎没有在set interval函数内运行if语句。

也许我只是不明白setInterval是如何工作的,但我看不出代码有问题。

1 个答案:

答案 0 :(得分: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方法中。