Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как завершить Settimeout() ? (https://javascript.ru/forum/events/8480-kak-zavershit-settimeout.html)

libinstyle 28.03.2010 22:55

Как завершить Settimeout() ?
 
Здравствуйте! На самом деле вопроса два, первый такой
Есть скрипт, таймер обратного отсчета
sekundi=00;
minuti=30;
function time()
{
	if (sekundi==00) {sekundi=60; minuti--; }
sekundi--;
if (sekundi<10) {seconds='0'+sekundi} else {seconds=sekundi}
document.getElementById('vrema').innerHTML=minuti+":"+seconds;
if (minuti==0) {}
setTimeout("time()",1000)
}


там внутри я не закончил условие, если минуты равны нулю, то.... Надо чтоб таймер остановился, и вызвалась другая функция, насчет последнего это ясно, но как выйти из функции time()

Второй вопрос, в принципе сродни первому. У меня есть функция

function
{
//она выполняет:

1...
2...
3....
}

как мне после 2.. прекратить выполнение функции
что типа exit(); в PHP

Зарание спасибо!

Aetae 28.03.2010 23:13

return и clearTimeout

libinstyle 29.03.2010 00:42

Спосибо! return подошел в обоих случаях, не понятна специфика применения clearTimeout

Aetae 29.03.2010 01:03

http://javascript.ru/clearTimeout

libinstyle 29.03.2010 01:17

А как сделать return для какой нибудь другой функции? Например, если у меня тикает одна функция, тот же Тайм() приведенный выше, и я при нажатии на кнопку хочу остановить действие той функции?

Nekromancer 29.03.2010 10:10

return только из тела функции делается.

Gvozd 29.03.2010 11:08

Цитата:

Сообщение от libinstyle
А как сделать return для какой нибудь другой функции? Например, если у меня тикает одна функция, тот же Тайм() приведенный выше, и я при нажатии на кнопку хочу остановить действие той функции?

для данного случая, вам как-раз и понадобится clearTimeout
для этого надо объект получаемый от setTimeout хранить где-то в доступной для обработчика кнопки, области видимости.например вглобальной.
Кстати, а прервать выполнение текущей ф-ции(то есть которая прямо в данный момент выполняется) - нельзя, так как JS однопоточный асинхронный язык. для данного же вам варианта, это становится возможным, так как между выполнениями ф-ции time() проходит секунда. то есть обработчик кнопки запустится в промежутке между концом выполнения предыдущего раза time() и началом выполнения последующего раза time()
PS первым аргументов ssetTimeout лучше передавать ф-цию, а не строку
setTimeout(time,1000)

libinstyle 29.03.2010 12:40

Ясно. Спасибо разобрался. вместо строчки setTimeout("time()",1000)
пишем peremen=setTimeout("time()",1000)
а в функции которая завершает setTimeout() пишем clearTimeout(peremen)


Часовой пояс GMT +3, время: 11:34.