Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2015, 07:13
Новичок на форуме
Отправить личное сообщение для Tatyana83 Посмотреть профиль Найти все сообщения от Tatyana83
 
Регистрация: 28.11.2015
Сообщений: 1

Несколько таймеров + куки
Помогите присоединить к данному счетчику куки, так чтобы счетчик не сбрасывал значения, в то время когда закрыта страница (и продолжал считать). То есть посетитель заходит на сайт нажимает на кнопку, пошел отсчёт, к примеру на 60 минут. Закрывает страницу, возвращается через 30 минут и счетчик показывает "Ждать 30m".На странице несколько таких счётчиков.
<input id="Bit1" value="Счётчик" onclick="Bit1()">

<script>
var W;
function Bit1 ()
{
var o = document.getElementById ('Bit1');
o.disabled = 70; o.value = 'Ждать 60m.';
W = window.open ('#','hero');
myTimer ();
function myTimer ()
   {
   var W = o.value.split ('Ждать ') [1],
       t = 60 * parseInt (W) - 1 + ((W.indexOf ('m. ') != -1) ? parseInt (W.split ('m. ') [1]) : 0),
       m = Math.floor (t / 60);
       s = t % 60;
   if (t) {o.value = 'Ждать ' + m + 'm.' + (s ? (' ' + s + 's.') : ''); setTimeout (myTimer, 1000)}
   else {o.value = 'Счётчик'; o.disabled = 0; if (!W.closed) W.close ()}
   }
}
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2015, 11:17
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сделал через localStorage, но работает не очень:
<input id="Bit1" value="Счётчик" onclick="Bit( this )">
<input id="Bit2" value="Счётчик" onclick="Bit( this )">
<input id="Bit3" value="Счётчик" onclick="Bit( this )">
<script>
		var W;

		function initializeStorage() {
			if ( typeof(Storage) !== undefined ) {
				if ( !localStorage.timersArr ) {
					var timersArr = [];
					localStorage.timersArr = JSON.stringify( timersArr );
				}
			} else {
				alert( 'Браузер не поддерживает локальные хранилища!' );
			}
		}

		initializeStorage();

		if ( localStorage.timersArr ) {
			var timersArr = JSON.parse( localStorage.timersArr );
			var currentTime = new Date();
			for ( var i = 0; i < timersArr.length; i++ ) {
				var timeStart = new Date( parseInt( localStorage[timersArr[i]] ) );
				var difference = currentTime - timeStart;
				var m = 60 - Math.floor( ( difference / 1000 ) / 60 );
				var s = 60 - Math.floor( ( difference / 1000 ) ) % 60;
				var elem = document.getElementById( timersArr[i] );
				elem.value = 'Ждать ' + m + 'm.' + ( s ? s + 's.' : '' );
				myTimer( elem );
			}
		}

		function Bit( elem ) {
			var o = elem,
				id = elem.id,
				timersArr = JSON.parse( localStorage.timersArr );
			if ( timersArr.indexOf( id ) === -1 ) {
				timersArr.push( id );
			}
			localStorage.timersArr = JSON.stringify( timersArr );
			localStorage[id] = new Date().getTime();
			o.disabled = 70;
			o.value = 'Ждать 60m.';
			W = window.open ( '#', 'hero' );
			myTimer( o );
		}

		function myTimer( o ) {
			var W = o.value.split ( 'Ждать ' ) [1],
				t = 60 * parseInt( W ) - 1 + ((W.indexOf ( 'm. ' ) != -1) ? parseInt( W.split ( 'm. ' ) [1] ) : 0),
				m = Math.floor ( t / 60 ),
				s = t % 60,
				timersArr = JSON.parse( localStorage.timersArr );
			if ( t ) {
				o.value = 'Ждать ' + m + 'm.' + (s ? (' ' + s + 's.') : '');
				setTimeout( myTimer, 1000, o );
			}
			else {
				o.value = 'Счётчик';
				o.disabled = 0;
				localStorage.removeItem( o.id );
				timersArr.splice( timersArr.indexOf( o.id ), 1 );
				localStorage.timersArr = JSON.stringify( timersArr );
				if ( !W.closed ) W.close ()
			}
		}
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько таймеров на одной странице. Pothead Общие вопросы Javascript 1 27.05.2013 08:24
сохранить переменную в куки tasha_mille Events/DOM/Window 2 02.07.2012 14:29
Помогите с кодом сохранения параметром CheckBox-ов в куки Konstantine jQuery 0 26.05.2012 16:20
Ext.util.Cookies.set(...) - несколько переменных в одной куки. potkin ExtJS 4 07.05.2012 10:43
Одно событие во всех окнах одного домена kdn1990 Events/DOM/Window 18 25.04.2012 20:11