Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Остановить таймер
 
 автор: jangot   (06.11.2009 в 12:54)   письмо автору
 
 

У меня есть функция, которая запускается с помощью таймера
Эта функция выполняет какие-то действия, но по истечении 10с должна остановиться


var tim =10;
function time(){
    if(tim!=0){
        // действие 1
        tim-=1;
    }
    else {
        // действие 2
        clearInterval(timer)
    }
    }

var timer = setInterval(time, 1000);


Но она не останавливается, действие 2 выполняется с заданным таймером
Я пробовал запихнуть остановку в другую функцию, и вызвать уже ее но не помогла.
Я создал выключатель ( div ), на онКлик которого повесил остановку таймера, а потом вызвал это событие (с помощью jQuery) - это сработало. Но решение это карявое, хочется сделать покрасивше.
Подскажите как это можно сделать?

  Ответить  
 
 автор: АЯ   (06.11.2009 в 13:01)   письмо автору
 
   для: jangot   (06.11.2009 в 12:54)
 

А действие 2 и должно выполняться с заданным таймером.
Если хотите отключить таймер перед выполнением действия 2, то так и пишите:
clearInterval(timer) //сначала
// действие 2 потом, после отключения

  Ответить  
 
 автор: jangot   (06.11.2009 в 13:03)   письмо автору
 
   для: АЯ   (06.11.2009 в 13:01)
 

Это понятно.
Вопрос не о выполнении действия 2, а о том что таймер не останавливается.
Действие 2 выполняется с повтором, а должно только один раз

  Ответить  
 
 автор: АЯ   (06.11.2009 в 13:08)   письмо автору
 
   для: jangot   (06.11.2009 в 13:03)
 

Это вам показалось.
Запустите:
<div id="dd"></div>
<script>
var tim = 10;
function time ()
{
if (tim)
   {
   document.getElementById ('dd').innerHTML += tim + '<br>'; //Действие 1
   tim--;
   }
else
   {
   clearInterval (timer);
   document.getElementById ('dd').innerHTML += '<hr>'; //Действие 2
   }
}
var timer = setInterval (time, 1000); 
</script>
Горизонтальная черта в конце будет всегда ОДНА.

  Ответить  
 
 автор: jangot   (06.11.2009 в 16:20)   письмо автору
 
   для: АЯ   (06.11.2009 в 13:08)
 

Спасибо, разобрался.
У меня переменная была определена локально

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования