Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   javascript код обратный отсчет сбрасывается при обновлении (https://javascript.ru/forum/misc/68529-javascript-kod-obratnyjj-otschet-sbrasyvaetsya-pri-obnovlenii.html)

losapwild 22.04.2017 12:47

javascript код обратный отсчет сбрасывается при обновлении
 
Здравствуйте.

http://jsfiddle.net/SCyWG/62/

Тут код счетчика, от 19 до 1.

Никак не могу разобраться, чтобы цифра не сбрасывалась у чел ( сохранялась)

т. е для нового посетителя чтобы отчет начинался с начала(19-18...), а для старого продолжался с того момента как он ушел со страницы

Дубль кода:

var timer,
    num = 19,
    output = $('#mydiv');

function changeNum(){
    output.text(num--);
    //каждый раз задержка будет на 100ms больше
    if(num >= 0) setTimeout(changeNum,500+(19-num)*100);
}
setTimeout(changeNum,500);


---

<div id="mydiv"></div>

.... Я в этом отсталый, поэтому буду очень благодарен за готовый скрипт под мои нужны. Спасибо

Nexus 22.04.2017 12:57

http://jsfiddle.net/SCyWG/63/

<html>
<head>
	<title>Untitled</title>
	<meta charset="utf-8">
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
	<script type="text/javascript">
		$(function(){
			var timer,
				def=19,
				num = ('localStorage' in window)?(localStorage.getItem('timer-num')||def):def,
				output = $('#mydiv');
			 
			function changeNum(){
				output.text(num--);
				if('localStorage' in window)
					localStorage.setItem('timer-num',num);
				
				//каждый раз задержка будет на 100ms больше
				if(num>=0)
					setTimeout(changeNum,500+(19-num)*100);
			};
			setTimeout(changeNum,500);
		});
	</script>
</head>
<body>
	<div id="mydiv"></div>
</body>
</html>

losapwild 22.04.2017 13:00

Ура! Спасибо

losapwild 22.04.2017 13:01

А как сделать, чтобы через час сбрасывалось? чтобы через снова шло с 19 сек

Nexus 22.04.2017 13:17

http://jsfiddle.net/SCyWG/64/

<html>
<head>
	<title>Untitled</title>
	<meta charset="utf-8">
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
	<script type="text/javascript">
		$(function(){
			var timer,
				num = 19,
				output = $('#mydiv'),
				LS_allowed=('localStorage' in window);
			
			if(LS_allowed){
				var save_time=parseInt(localStorage.getItem('timer-time'))||0;
				if(save_time+1*60*60*1000>=(new Date()).getTime())
					num=localStorage.getItem('timer-num')||num;
			};
			 
			function changeNum(){
				output.text(num--);
				if(LS_allowed){
					localStorage.setItem('timer-num',num);
					localStorage.setItem('timer-time',(new Date()).getTime());
				};
				
				//каждый раз задержка будет на 100ms больше
				if(num>0)
					setTimeout(changeNum,500+(19-num)*100);
			};
			setTimeout(changeNum,500);
		});
	</script>
</head>
<body>
	<div id="mydiv"></div>
</body>
</html>


Часовой пояс GMT +3, время: 18:38.