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

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

30.10.2015, 12:44. Показов 2465. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru