Показать сообщение отдельно
  #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>
Ответить с цитированием