Помогите с 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.... - все ок отсчет идет!, но если кликнуть несколько раз отсчет будет идти быстрее с кажым разом! а мне необходимо чтобы отсчитывалось по единицы раз в секунду..... вообще обычный таймер... а как нужно в данный момент функция работает только в первый раз!!! при повторном запуске скорость отсчета ускоряется!, подскажите что мне исправить, чтобы небыло этой досадной проблемы! |
Предлагаю поменять так :
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); |
Цитата:
даже отсчитывать нормально перестал( http://shureg.idhost.kz/test/index.php |
<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> |
Спасибо! точто нужно! :dance: :dance:
вот еще небольшой глюк но уже несмертельно - если много много раз нажимать на старт с кажым кликом идет отсчет минус 1, даже если секунда не прошла... - впринципе не смертельно, но можно ли и это излечить? |
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> |
спасибо, вопрсов не имею
|
Часовой пояс GMT +3, время: 18:38. |