Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 16

Таймер при клике на ссылку

30.10.2015, 12:44. Показов 2489. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем Здравия!
Нашел в интернете скрипт, который может запускать таймер с открытием странички после нажатия на кнопку. Но, после обновление странички с таймером, он сбрасывается... Помогите, пожалуйста, сохранить значение таймера!

Вот код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>  
<html>
<head>
    <title>111</title>
    <meta charset="utf-8">
    <style>
        .st{background-color:blue; color:white;}
        .sp{background-color:red; color:white;}
    </style>
 
</head>
<body>
    
    <table border="0" cellpadding="0" cellspacing="0" bordercolor="#00000">
    <tr><td><div class="st" id="tm">01:20:20</div></td></tr></table> 
    <input type="button" value="старт" onclick="timer.start(),Sl()" >  
    <input type="button" value="стоп"  onclick="timer.stop()">   
    
</body>
</html>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 var Timer = function(element, hours, minutes, sec){
    var me = this;
    this.hours = hours;
    this.minutes = minutes;
    this.sec = sec;
    this.element = element;
    this.interval = null;
    
    this.reduce = function() {
        if(me.hours + me.minutes + me.sec <= 0) {
            me.stop();
            return;
        }
        me.sec-=1;
        if(me.sec<0) me.sec=00,me.minutes-=1;
        if(me.minutes<0) me.minutes=00,h-=1; 
        if(me.hours<0) me.hours=00 ;
        if(me.hours + me.minutes + me.sec==0)me.callback();
        me.sec = me.sec+"";
        me.minutes = me.minutes+"";
        me.hours = me.hours+""; 
        if (me.sec.length<2) me.sec = "0"+me.sec;
        if (me.minutes.length<2) me.minutes = "0"+me.minutes;
        if (me.hours.length<2) me.hours = "0"+me.hours;
        me.element.innerHTML=me.hours+":"+me.minutes+":"+me.sec; 
    }
     
    this.start = function(){
        me.interval = setInterval(me.reduce, 1000);
        me.element.className="sp"
    }
    this.stop = function(){
        clearInterval(me.interval);
        me.element.className="st"
    }
     
}
 
var timer = new Timer(document.getElementById('tm'), 1, 20, 20);
           
 function Sl()
    {window.open('https://mail.ru/','_blank');}
Добавлено через 16 минут
Было бы еще лучше, если бы он продолжал отсчитывать даже при закрытии браузера.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2015, 12:44
Ответы с готовыми решениями:

При первом клике на ссылку открывать описание при втором переходить по ссылке
Есть ссылка с div в котором находиться описание к ссылке что-то типо card в bootstrap 4. Описание выводится при наведении, но для...

При клике на ссылку ничего не происходит
У меня на сайте есть блок div с display:none, который показывается при клике на другую область, т.е. становится display:block. Ссылки в...

Открытие контента в другом модальном окне при клике на ссылку
Всем привет. Мне нужно узнать, как при нажатие на ссылку, открыть контент, в другом модальном окне. Хочу, чтобы открывались и html...

6
4 / 4 / 1
Регистрация: 28.03.2015
Сообщений: 155
30.10.2015, 15:30
Цитата Сообщение от raindew Посмотреть сообщение
Было бы еще лучше, если бы он продолжал отсчитывать даже при закрытии браузера.
о это тебе ко мне...
0
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 16
30.10.2015, 16:15  [ТС]
Но мне бы без php...) На js такое не сделать?
0
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
30.10.2015, 20:06
Цитата Сообщение от raindew Посмотреть сообщение
На js такое не сделать?
Можно сохранять данные в локальное хранилище браузера, например так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    var Timer = function(element, hours, minutes, sec){
        var me = this;
        this.hours = hours;
        this.minutes = minutes;
        this.sec = sec;
        this.element = element;
        this.interval = null;
        
        this.reduce = function() {
            localStorage.setItem('me', JSON.stringify(me));
            if(me.hours + me.minutes + me.sec <= 0) {
                me.stop();
                return;
            }
            me.sec-=1;
            if(me.sec<0) me.sec=00,me.minutes-=1;
            if(me.minutes<0) me.minutes=00,h-=1; 
            if(me.hours<0) me.hours=00 ;
            if(me.hours + me.minutes + me.sec==0)me.callback();
            me.sec = me.sec+"";
            me.minutes = me.minutes+"";
            me.hours = me.hours+""; 
            if (me.sec.length<2) me.sec = "0"+me.sec;
            if (me.minutes.length<2) me.minutes = "0"+me.minutes;
            if (me.hours.length<2) me.hours = "0"+me.hours;
            me.element.innerHTML=me.hours+":"+me.minutes+":"+me.sec; 
        }
         
        this.start = function(){
            me.interval = setInterval(me.reduce, 1000);
            me.element.className="sp"
        }
        this.stop = function(){
            clearInterval(me.interval);
            me.element.className="st"
        }
         
    }
 
    if (localStorage.getItem('me') !== null) {
        me = JSON.parse(localStorage.getItem('me'));
        document.getElementById('tm').innerHTML = me.hours+":"+me.minutes+":"+me.sec;
        var timer = new Timer(document.getElementById('tm'), me.hours, me.minutes, me.sec);
    } else
        var timer = new Timer(document.getElementById('tm'), 1, 20, 20);
               
    function Sl()
        {window.open('https://mail.ru/','_blank');}

Но сначала разберитесь с самим таймером, он у вас не корректно ведет обратный отсчет
0
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 16
31.10.2015, 17:03  [ТС]
Vadim_Lasso, благодарю, но так же нужно, чтобы он продолжал отсчитывать время, а не просто останавливался. Если с таймером что-то не так, что мешает ему продолжить отсчет, то что это, не подскажите?
0
 Аватар для 2849141
127 / 97 / 74
Регистрация: 06.10.2015
Сообщений: 260
31.10.2015, 19:04
1. Пользователь нажимает ссылку.
2. В localStorage заносится текущее время + заданное время таймера.
3. Таймер запускается, начинается отсчет.
4. Пользователь ушел со страницы.
5. Пользователь зашел на страницу через энное время.
6. Берутся данные из пункта 2 и вычитается текущее время.
7. Разница - это текущее время таймера.
0
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 16
31.10.2015, 20:24  [ТС]
2849141, да, спасибо, но мне бы кодом)
В целом, мне нужно примерно вот что:

Страничка1 - это то место, где находятся ссылки и откуда, пользователь переходит по ним.
Страничка2 - переход по ссылки со странички1.

1) Пользователь нажимает на ссылку (их может быть более 1) на страничке1.
2) Ссылок может быть более 1 и потому, отсчет времени (при нажатии на ссылку), должен быть уникальным в зависимости от нужного вписываемого времени к каждой ссылке. Возможно можно применить в html: data-time="0" для уникальности времени каждой ссылки.
3) Открывается страничка2.
4) В то же время, на страничке1 должен начаться отсчет времени (возле нажатой ссылки) посещения странички2 (при нажатии на ссылку).
5) Если пользователь обновляет страничку1, или же перезагружает браузер, то отсчет времени этой ссылки, на которую он нажал, дабы перейти на страничку2, продолжает идти в независимости от того, закроет он свой браузер, обновит его или останется в нем.

Примерно так я вижу то, что мне нужно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2015, 20:24
Помогаю со студенческими работами здесь

При клике на ссылку - переход по ссылке и закрытие модального окна
Есть модальное окно и в нем несколько ссылок на другие страницы. Нужно чтобы при клике на ссылку срабатывал переход по ней и закрывалось...

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

Как сделать активным пункт меню в выпадающем списке при клике на ссылку в теле странице?
Добрый день, Уважаемые форумчане! Перерыл весь интернет, но ответа на свой вопрос не нашел. Вообщем: Есть всплывающая пошаговая форма...

Запустить таймер при клике на кнопку
Всем доброго дня нашёл таймер всё работает как нужно. Но есть проблемка. Как сделать чтобы он запускался от кнопки. Останавливался когда...

Показать блок при клике на ссылку
Друзья, помогите пожалуйста, js не знаю, а проблему нужно решить чем быстрее, тем лучше &lt;div class=&quot;comments&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru