如何从固定的时间连续检查jQuery的时间

时间:2012-01-23 17:22:17

标签: jquery timer

我有一个非常简单的问题,我需要在固定时间30分钟后做一些事情,然后在相同的固定时间30分15秒后再做一些事情。我使用以下代码来实现它,但它似乎不起作用。

<script type="text/javascript" src="<c:url value="/resources/js/date.js" />"></script>

<script type="text/javascript" >
$(document).ready(function () {
    jQuery.ajax({
        url: "/wikedlynotsmart/creationTime",
        success: function (data) {
            var date = parseFloat(data.creationDate);
            var timeCreation = new Date(date);
            var timeAlert = new Date(timeCreation);
            timeAlert.setMinutes(timeCreation.getMinutes() + 30);
            var timeAutoSubmit = new Date(timeCreation);
            timeAutoSubmit.setMinutes(timeCreation.getMinutes() + 30);
            timeAutoSubmit.setSeconds(timeCreation.getSeconds() + 15);
            setInterval(function () {
                if (new Date() == timeAlert) {
                    alert("time is over");
                }
                if (new Date() == timeAutoSubmit) {
                    $('form').submit();
                }
            }, 1000);
        },
        async: false,
        dataType: "json"
    });
});
</script>

有人可以帮我理解我在这里做错了吗?

感谢。

编辑:“时间到了!已被编辑为”时间已结束“但仍无效。

2 个答案:

答案 0 :(得分:2)

如果可以避免,请不要每秒计算一次。 AFAIK你也无法比较Date()这样的对象。

计算出返回时间到现在30分钟之间的初始延迟,并等待那么久。然后再等15秒。

var create = new Date(data.creationDate).getTime() + (30 * 60 * 1000);
var now = new Date().getTime();

var delay = Math.max(0, create - now);  // initial delay
setTimeout(function() {
    console.log("Time's up!");  // not alert() - that blocks the UI
    setTimeout(function() {
        $('form').submit();
    }, 15000);
}, delay);

答案 1 :(得分:0)

威尔

setTimeout('myFunction();',1800000);

不起作用?

(1,800,000是30分钟,以毫秒为单位)。