Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2018, 16:49
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

Вызов функции, отмена старой функции. Таймер
Здравствуйте.

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

Спасибо.

Вот пример функции:

function Posting(postTimer, postId, postUptime, postSR){
    document.querySelector('#ratenow_'+postId).innerHTML = postSR;
    var Kur = setInterval(
        function(){
            var nowtime = new Date();
            var nt = nowtime.getTime();
            var diff =  nt-Date.parse(postUptime);
            var timestr = parseInt(diff/60000)+':'+addZeros(parseInt((diff/1000)%60));
            document.querySelector('#timer_'+postId).innerHTML = timestr;
        },1000
    );
}
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2018, 17:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

finlolo,
var Kur;
    function Posting(postTimer, postId, postUptime, postSR){
    document.querySelector('#ratenow_'+postId).innerHTML = postSR;
    window.clearInterval(Kur);
    Kur = setInterval(
        function(){
            var nowtime = new Date();
            var nt = nowtime.getTime();
            var diff =  nt-Date.parse(postUptime);
            var timestr = parseInt(diff/60000)+':'+addZeros(parseInt((diff/1000)%60));
            document.querySelector('#timer_'+postId).innerHTML = timestr;
        },1000
    );
}
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2018, 17:38
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

рони,
такой способ у меня почему-то не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 15.08.2018, 17:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

finlolo,
что консоль пишет?
Ответить с цитированием
  #5 (permalink)  
Старый 15.08.2018, 17:52
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

рони,
ничего. у меня по нажатию приходят новые данные, вызывается эта функция, которая постит время и новые значения с
window.clearInterval(Kur);
но новые данные выводятся поверх старых и так далее..
в общем, как и было.
Ответить с цитированием
  #6 (permalink)  
Старый 15.08.2018, 18:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

finlolo,
значит вы что-то не договариваите.
Ответить с цитированием
  #7 (permalink)  
Старый 15.08.2018, 18:06
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

рони,
вероятно я до этого допустил ошибку. еще раз переписал как показали. сейчас у меня из 5 таймеров на странице работает только один. Консоль ошибок не выдает .
Ответить с цитированием
  #8 (permalink)  
Старый 15.08.2018, 18:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

finlolo,
?
Ответить с цитированием
  #9 (permalink)  
Старый 15.08.2018, 18:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от finlolo
сейчас у меня из 5 таймеров на странице работает только один. Консоль ошибок не выдает .
это проблема или так и должно быть?
Ответить с цитированием
  #10 (permalink)  
Старый 15.08.2018, 18:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

finlolo,
...
var Kur = {};
    function Posting(postTimer, postId, postUptime, postSR){
    document.querySelector('#ratenow_'+postId).innerHTML = postSR;
    Kur[postId] && window.clearInterval(Kur[postId]);
    Kur[postId] = setInterval(
        function(){
            var nowtime = new Date();
            var nt = nowtime.getTime();
            var diff =  nt-Date.parse(postUptime);
            var timestr = parseInt(diff/60000)+':'+addZeros(parseInt((diff/1000)%60));
            document.querySelector('#timer_'+postId).innerHTML = timestr;
        },1000
    );
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое подключение JS и вызов функции Paqwerty Events/DOM/Window 1 25.04.2017 16:33
О видимости функции внутри другой функции, рекурсивный вызов DanK Node.JS 1 24.08.2016 20:32
Вызов функции страницы из расширения chrome nontxt Events/DOM/Window 0 09.02.2015 10:42
Вызов функции из скрытого iframe Beer75 Общие вопросы Javascript 2 05.06.2013 21:36
Как временно запретить вызов функции? Dazar Общие вопросы Javascript 9 02.09.2012 22:52