@Genri_Rus

Как обновлять таймер по клику?

Вот пример:

Мне нужно сделать так, что если человек постоянно кликает по кнопке, то обновлять таймер

Как вообще это можно сделать ?
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
странная логика заложена у вас.

1. контейнер для таймер можно/нужно добавить в нужное место в HTML, а не добавлять каждый раз по клику, либо добавлять его по условию (что он еще не создан).

2. вы безусловно добавляете элементы, а потом лишнее удаляете, зачем?

3. зачем-то создали специально объект, хотя можно просто работать с массивом и удалять его элементы, массив это тот же объект.
const items = [];
items["one"]=1;
items["two"]=1;
if(items["one"]) console.log("Есть"); else console.log("Нет");
delete items["one"];
if(items["one"]) console.log("Есть"); else console.log("Нет");

// либо
items["one"]=0;
if(items["one"]) console.log("Есть"); else console.log("Нет");


4.
Мне нужно сделать так, что если человек постоянно кликает по кнопке, то обновлять таймер

у вас собственно вообще нет обработки повторного клика на туже кнопку, вместо этого у вас
удаление излишне созданного контейнера, т.к. он выше добавляется безусловно:
if (index > 0) {
          $(this).remove();
       }

и возврат из обработчика если есть элемент (т.е. ранее был клик):
if (items[name]) return;

5. для возобновления таймера, вам надо написать обработчик повторного нажатия а не выходить из обработчика по условию
if (items[name]) return;

т.е. так:
if (items[name]) {
// остановка анимации таймера и запуск заново
} else {
// код первого запуска таймера.
}


остановка анимации, см. метод .stop

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

как-то так.

UPDATE:

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@McBernar
let timerId = setTimeout(...);
clearTimeout(timerId);

Разберетесь дальше?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы