Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.10.2010, 11:43
Аспирант
Отправить личное сообщение для shureg Посмотреть профиль Найти все сообщения от shureg
 
Регистрация: 12.06.2010
Сообщений: 53

Помогите с setTimeout или setInterval
Доброго времени суток, необпеределился что лучше использовать, но при использовании этих функций выходит один и тотже глюк!!!

есть функция:

function close_responce(limit)
     {
       if(limit > 0)
       {
            document.getElementById("timer_time").innerHTML=limit;
	 limit--;
             setTimeout(close_responce, 1000);
        }else{
             responce_close();
        }
}
    setTimeout(close_responce, 1000);

либо:
function close_responce(limit)
     {
       if(limit > 0)
       {
            document.getElementById("timer_time").innerHTML=limit;
	 limit--;
        }else{
             responce_close();
        }
}
    setInterval(close_responce, 1000);


впринципе разница в них небольшая и происходит одно и тоже!

есть контейнер <div id="timer_time"></div> и есть кнопка типа <button type="button" onClick="close_responce(10)">Click</button> и приклике идет отсчет от 10, до 0.... - все ок отсчет идет!, но если кликнуть несколько раз отсчет будет идти быстрее с кажым разом! а мне необходимо чтобы отсчитывалось по единицы раз в секунду..... вообще обычный таймер...

а как нужно в данный момент функция работает только в первый раз!!! при повторном запуске скорость отсчета ускоряется!, подскажите что мне исправить, чтобы небыло этой досадной проблемы!

Последний раз редактировалось shureg, 23.10.2010 в 11:45.
Ответить с цитированием
  #2 (permalink)  
Старый 24.10.2010, 10:51
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

Предлагаю поменять так :
var interval;

function close_responce(limit)
     {
       if(limit > 0)
       {
            document.getElementById("timer_time").innerHTML=limit;
	 limit--;
        }else{
             responce_close();
        }
}
    interval = setInterval(close_responce, 1000);


И теперь в том месте где происходит повторный вызов предварительно сделать clearInterval(interval);
Ответить с цитированием
  #3 (permalink)  
Старый 24.10.2010, 11:09
Аспирант
Отправить личное сообщение для shureg Посмотреть профиль Найти все сообщения от shureg
 
Регистрация: 12.06.2010
Сообщений: 53

Сообщение от MadGest Посмотреть сообщение
Предлагаю поменять так :
И теперь в том месте где происходит повторный вызов предварительно сделать clearInterval(interval);
не помогло, вот для примера выложил как работает(((
даже отсчитывать нормально перестал(

http://shureg.idhost.kz/test/index.php

Последний раз редактировалось shureg, 24.10.2010 в 11:13.
Ответить с цитированием
  #4 (permalink)  
Старый 24.10.2010, 11:26
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

<script language="JavaScript">
            var limit = 100;
            var interval;
            
            function close_responce()
            {
                if(limit > 0){
                    limit--;
                    document.getElementById("timer_time").innerHTML=limit;
                }
                else
                {
                    clearInterval(interval);
                    limit = 100;
                }
		clearInterval(interval);  //<----------
                interval = setInterval(close_responce, 1000);
            }
        </script>
Ответить с цитированием
  #5 (permalink)  
Старый 24.10.2010, 11:29
Аспирант
Отправить личное сообщение для shureg Посмотреть профиль Найти все сообщения от shureg
 
Регистрация: 12.06.2010
Сообщений: 53

Спасибо! точто нужно!

вот еще небольшой глюк но уже несмертельно - если много много раз нажимать на старт с кажым кликом идет отсчет минус 1, даже если секунда не прошла... - впринципе не смертельно, но можно ли и это излечить?
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2010, 11:35
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

var limit = 100;
        var interval;
            
			function Start()
			{
				if(interval === undefined)
					interval = setInterval(close_responce, 1000);
			}
            function close_responce()
            {
                if(limit > 0){
                    limit--;
                    document.getElementById("timer_time").innerHTML=limit;
                }
                else
                {
                    limit = 100;
                }                
            }


Ну и соответственно вызов такой:
<button type="button" onClick="Start();">Старт</button>
Ответить с цитированием
  #7 (permalink)  
Старый 24.10.2010, 11:43
Аспирант
Отправить личное сообщение для shureg Посмотреть профиль Найти все сообщения от shureg
 
Регистрация: 12.06.2010
Сообщений: 53

спасибо, вопрсов не имею
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пжлста, найти (или написать) скрипт для смены картинок. Artweb Работа 9 25.02.2011 11:28
setTimeout setInterval и др. mycoding Общие вопросы Javascript 6 28.10.2010 17:26
Помогите определить фреймворк или найти аналог rolph Библиотеки/Тулкиты/Фреймворки 2 15.12.2009 13:06
Еще один вопрос по setTimeout setInterval Хранитель Света Общие вопросы Javascript 5 12.03.2009 22:37
Помогите или подскажите где искать. designovermatter Общие вопросы Javascript 2 09.10.2008 18:12