jQuery

Как перестать обновлять дату внутри setInterval&

Добрый день. Есть функция setInterval в которой обновляется дата.

function tDate()
{
now = new Date();
hour = "" + now.getHours(); if (hour.length == 1) { hour = "0" + hour; }
minute = "" + now.getMinutes(); if (minute.length == 1) { minute = "0" + minute; }
second = "" + now.getSeconds(); if (second.length == 1) { second = "0" + second; }
return hour + ":" + minute + ":" + second;
};

var timerId = setInterval("funcTimer()", 1000);
i = 0;
function funcTimer(){
if(i >= 40)
{
$("#ttpa").css({ "background-color": "#ff7777"});
$("#errPlan").text(tDate()+" "+"Текст");
}
else
{
$("#ttpa").css({ "background-color": "#bbf9bb"});
$("#errPlan").text("");
};
};

Подскажите пожалуйста, как сделать так чтобы при выполнения условия i >= 40 выходило время срабатывания условия. В данном примере у меня дата постоянно обновляется.
setInterval
Синтаксис
intervalID = window.setInterval(func|code, delay)
Аргументы

func|code
Функция или строка кода для выполнения
delay
Интервал в миллисекундах, т. е 1000 это 1 секунда

Описание, примеры

В отличие от метода setTimeout, setInterval выполняет код много раз, через равные промежутки времени, пока не будет остановлен при помощи clearInterval.

В каком виде указывать первый параметр - разницы нет.
При указании строки кода - динамически создается функция с телом code.

Следующие два вызова почти одинаковы:
1
// (1)
2
setInterval('alert("прошла секунда")', 1000)
3

4
// (2)
5
function sec() {
6
alert("прошла секунда")
7
}
8
setInterval(sec, 1000) // использовать функцию

Но более правильным считается объявление функции в явном виде, например так:
setInterval(function() { alert(...) }, 1000)

Вызов со строкой существует для совместимости с прежними версиями javascript.
this

Функция выполняется в другом контексте, со значением this = window, поэтому о передаче правильного this надо позаботиться отдельно.
1
object = {
2
func: function() { alert(this) }
3
}
4

5
setInterval( object.func, 1000) // this будет равно window
6

7
// правильный вариант с передачей this
8
setInterval( function() { object.func.call(object) } , 1000)
Отмена выполнения

Вы можете отменить выполнение setInterval при помощи clearInterval, используя для этого идентификатор intervalID.
var intervalID = setInterval(...)
clearInterval(intervalID)
Дмитрий Хван
Дмитрий Хван
98 963
Лучший ответ

Похожие вопросы