2013-04-30 3 views
0

Вот что я хочу сделать.Функция запуска в течение 30 минут

  1. Выполнение функции: один раз, в определенное время суток.
  2. Функция работает 30 минут.

Я попытался SetTimeout, но это не соответствует моим требованиям, потому что запустить функцию после X milisecond. В то время как мне нужна функция для выполнения сразу, в нужное время в течение 30 минут. Код прилагается.

var d = new Date(); 
var hour = d.getHours(); 
var minute = d.getMinutes(); 
var day = self.getDate(); 

var month_name=new Array(12); 
month_name[0]="January" 
month_name[1]="February" 
month_name[2]="March" 
month_name[3]="April" 
month_name[4]="May" 
month_name[5]="June" 
month_name[6]="July" 
month_name[7]="August" 
month_name[8]="September" 
month_name[9]="October" 
month_name[10]="November" 
month_name[11]="December" 

var month = month_name[self.getMonth()]; 
var fullDate = month+' '+day+' '+hour+':'+minute; 

function someFunction() {} 

function closeFunction(){ 
    noticeDiv.css('display', 'block'); 
    mainDiv.css('display', 'none'); 
} 

function executeFunction(targetDate){ 
    if (fullDate == targetDate){ 
    setTimeout (closeFunction(), 180000); 
    }else{ 
    someFunction(); 
    } 
} 

executeFunction(targetDate); 
+2

Вы хотите прервать функцию через 30 минут? Невозможно сделать это извне функции. Вам нужно будет выполнить эту проверку внутри самой функции. Обратите внимание, что в зависимости от вашей платформы выполнения вы можете столкнуться с ограничениями длины выполнения. Многие браузеры предлагают убивать скрипты, которые работают в течение длительных периодов времени. Что касается задержки, если миллисекундный счет вызывает целочисленное переполнение, просто сложите его до максимально возможного таймаута и цикла до тех пор, пока время не станет правильным. – Unsigned

+0

Функция, которая занимает 30 минут для запуска? – Bergi

ответ

0

использования setInterval Функция

Syntax-> интервал переменная = setInterval (функция() {имя_функции()}, время ожидания в миллисекундах);

Чтобы очистить функцию интервала или остановки, мы используем -> clearInterval (interval);

HTML

<!-- Hide by default, show at target time --> 
<div id="noticeDiv" style="display: none"> 
     <h2>Registration Closed.</h2> 

</div> 
<!-- Show by default, hide at target time --> 
<div id="mainDiv"> 
     <h2>Registration Open.</h2> 

</div> 

JQuery

$(document).ready(function() { 
    var d = new Date(); 
    var hour = d.getHours(); 
    var minute = d.getMinutes(); 
    var day = d.getDate(); 

    var month_name = new Array(12); 
    month_name[0] = "January" 
    month_name[1] = "February" 
    month_name[2] = "March" 
    month_name[3] = "April" 
    month_name[4] = "May" 
    month_name[5] = "June" 
    month_name[6] = "July" 
    month_name[7] = "August" 
    month_name[8] = "September" 
    month_name[9] = "October" 
    month_name[10] = "November" 
    month_name[11] = "December" 

    var month = month_name[d.getMonth()]; 
    var fullDate = month + ' ' + day + ' ' + hour + ':' + minute; 
    console.log(fullDate); 
    fulldate = 'May 3 17:1'; 

    function executeFunction(targetDate) { 
     x = 0; 
     if (fulldate == targetDate) { 

// установить время закрытия функции 180000 = 30 min.It скроет Див регистрации открыта и шоу-регистрация закрыта DIV.

 interval = setInterval(closeFunction, 180000); 
     } else { 
      openFunction(); 
     } 
    } 

    function openFunction() { 
     console.log('Registration is now open') 
    } 

    function closeFunction() { 
     x++; 
     $('#mainDiv').append(x); 
     if (x == 1) { 
      $('#noticeDiv').show(); 
      $('#mainDiv').hide(); 
      clearInterval(interval); 
     } 
    } 
    // Execute time 
    executeFunction('May 3 17:1'); 
}); 

Рабочая Демонстрационный http://jsfiddle.net/cse_tushar/8r5T8/

+0

Пробовал это, он не работает. Где я могу поместить интервал var в любом случае? – baker

+0

// использовать jquery 1.91 с ним $ (document) .ready (function() { // здесь все приведенное выше код }); –

+0

все, что я пропустил? http://jsfiddle.net/Lwgrn/ В принципе, просто хочу показать и скрыть определенный div в определенное время – baker

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