Помогите с 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, время: 12:40. |