Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> странный глюк таймера 
:(
    Опции темы
Alix36
Дата 4.5.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: нет
Всего: 3



Код

function startCountdown(){
tim = 11;
       if(tim > 1){tim--;
               document.getElementById('d1').innerHTML = 'Еще  ' +tim  + ' секунд.' ;
               setTimeout(startCountdown,1000);
               }
       else
       {
       document.getElementById('d1').innerHTML = 'БУ!.' ;
       }
               }

трабла в том, что таймер считает тока 1 раз почемуто высвечивается всегда
"Еще  10 секунд"


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Sardar
Дата 4.5.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Интересная логика... ты не подумал что на каждом шаге сбрасываешь tim чем и получил бесконечный цикл?

Код
//принимает сколько нужно считать и функцию что принимает значения
function startCountdown(tim, handler) {
  var tmr = setInterval(function() {
      if(--tim > 0) handler(tim, true);
      else {
         handler(tim, false);
         clearInterval(tmr);
      }
  }, 1000);
  //возвращаем функцию, которой можно остановить таймер досрочно
  return function() { handler(-1, false); clearInterval(tmr); };
}

var stop = startCountdown(10, function(val, next) {
   document.getElementById('d1').innerHTML = next? 'Еще  ' + val  + ' секунд.': 'БУ!.';
});

//stop() -- так можно остановить таймер досрочно.



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
AKS
Дата 5.5.2007, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Эх, нравится мне обратный отсчет! Поэтому не поленился "подшлифовать":
Код

function startCountdown(tim, handler) {
    var tmr = window.setInterval(
        function () {
            (tim) ? handler(--tim)
                  : window.clearInterval(tmr);
        }, 1000);
    handler(tim);
    return function () { tim = 1; };
}

PM MAIL   Вверх
Alix36
Дата 5.5.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: нет
Всего: 3



А "handler" отображает нужный текст?



--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
AKS
Дата 5.5.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(Alix36 @  5.5.2007,  20:18 Найти цитируемый пост)
А "handler" отображает нужный текст?

Проверьте...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.