Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.08.2014, 16:42
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

condpattern, не чаще 1 раза в сутки и через 24 часа - это разные вещи так то...
Ответить с цитированием
  #12 (permalink)  
Старый 05.08.2014, 17:09
Аватар для condpattern
Интересующийся
Отправить личное сообщение для condpattern Посмотреть профиль Найти все сообщения от condpattern
 
Регистрация: 30.07.2014
Сообщений: 17

Сообщение от Rise Посмотреть сообщение
condpattern, не чаще 1 раза в сутки и через 24 часа - это разные вещи так то...
Да, вы правы. При том не чаще раза в сутки сделать проще, как мне кажется. Таймер отсчитывающий время до начала суток уже нашел, работает. Осталось дело за малым:

--При заходе на страницу
+Проверяем куки
+Находим переменную lastpick
+Если дата не сегодняшняя удаляем
+Если сегодняшняя ничего не делаем

--Отображение на странице
+Если переменная lastpick объявлена показываем
+Then таймер
+Else ссылку

--При клике по ссылке
+Добавляем в куки переменную lastpick равную текущей дате

Придется все таки вспоминать PHP.
Ответить с цитированием
  #13 (permalink)  
Старый 05.08.2014, 17:41
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от condpattern Посмотреть сообщение
При том не чаще раза в сутки сделать проще, как мне кажется.
как раз наоборот
Сообщение от condpattern Посмотреть сообщение
Придется все таки вспоминать PHP.
В данном случае зачем вам php?
Ответить с цитированием
  #14 (permalink)  
Старый 05.08.2014, 18:37
Аватар для condpattern
Интересующийся
Отправить личное сообщение для condpattern Посмотреть профиль Найти все сообщения от condpattern
 
Регистрация: 30.07.2014
Сообщений: 17

Сообщение от Rise Посмотреть сообщение
как раз наоборот
В данном случае зачем вам php?
Решил попытаться сделать все на JavaScript. Так как я не знаю даже синтаксиса, то нашел куски которые мне нужны но не могу соединить в единое целое, просьба помочь:

1. Вот код, который проверяет куки и достает переменную name, если она задана или присваивает ей значение undefined:
function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;


2. Вот код, который выдает ссылку если переменная name undefined или таймер отсчета до конца суток, если переменная нашлась:
if (typeof name != 'undefined') {
document.getElementById('countdownToMidnight').innerHTML='<a href="#">Ссылка</a>';
  }
else {
function ShowTimes() {
      var now = new Date();
      var hrs = 23-now.getHours();
      var mins = 59-now.getMinutes();
      var secs = 59-now.getSeconds();
      var str = '';
      str += hrs+':'+mins+':'+secs;
  document.getElementById('countdownToMidnight').innerHTML = str;
}
}


3. Вот код который записывает переменную name в куки и ставит время хранения для нее столько секунд, сколько осталось до конца суток:
function setCookie( name, value, expires, path, domain, secure ) {
	document.cookie = name + "=" + escape(value) +
		((expires)  ?  "; expires=" + expires.toGMTString():   "") + 
		((path)  ?  "; path=" + path   :   "")   + 
		((domain)  ?  "; domain="   +  domain :   "")   + 
		((secure)  ?  ";   secure"  :   "");
}
setCookie( 'name', date.getDay(), new Date( (new Date()).getTime() + ( 86400 - 3600*date.getHours() - 60*date.getMinutes() - date.getSeconds(); ) ), '/' );


Подскажите, пожалуйста:
1) Как сделать так, чтобы код 1 и 2 исполнялись при загрузке странице? Возможно,
window.onload

А куда его вставлять?
2) Как сделать, чтобы куки записывались при клике на id="countdownToMidnight"? Возможно,
getElementById('countdownToMidnight')

А куда его вставлять?
Спасибо за помощь.
Ответить с цитированием
  #15 (permalink)  
Старый 05.08.2014, 23:42
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

condpattern,
<script src="http://learn.javascript.ru/files/tutorial/browser/cookie/cookie.js"></script>
<script>
function clickTimer() {
	if (!d) {
		d = new Date().setHours(24, 0, 0, 0); 
		setCookie('timestamp', d, { expires: d, path: '/' });
		startTimer();
	}
}
function startTimer() {
	var a = d;
	var b = new Date();
	var c = a - b;
	if (a >= b) {
		var h = parseInt(c / 36e5) % 24;
		if (h < 10) h = '0' + h;
		var m = parseInt(c / 6e4) % 60;
		if (m < 10) m = '0' + m;
		var s = parseInt(c / 1e3) % 60;
		if (s < 10) s = '0' + s;
		e.innerHTML = h + ' : ' + m + ' : ' + s;
		setTimeout(startTimer, 1e3);
	} else {
		d = 0;
		deleteCookie('timestamp');
		e.innerHTML = 'Click Me';
	}
}
</script>

<div id="countdown">Click Me</div>

<script>
var d = getCookie('timestamp');
var e = document.getElementById('countdown');
	e.onclick = clickTimer;
if (d) startTimer();
</script>
Ответить с цитированием
  #16 (permalink)  
Старый 06.08.2014, 10:39
Аватар для condpattern
Интересующийся
Отправить личное сообщение для condpattern Посмотреть профиль Найти все сообщения от condpattern
 
Регистрация: 30.07.2014
Сообщений: 17

Сообщение от Rise Посмотреть сообщение
condpattern,
<script src="http://learn.javascript.ru/files/tutorial/browser/cookie/cookie.js"></script>
<script>
function clickTimer() {
	if (!d) {
		d = new Date().setHours(24, 0, 0, 0); 
		setCookie('timestamp', d, { expires: d, path: '/' });
		startTimer();
	}
}
function startTimer() {
	var a = d;
	var b = new Date();
	var c = a - b;
	if (a >= b) {
		var h = parseInt(c / 36e5) % 24;
		if (h < 10) h = '0' + h;
		var m = parseInt(c / 6e4) % 60;
		if (m < 10) m = '0' + m;
		var s = parseInt(c / 1e3) % 60;
		if (s < 10) s = '0' + s;
		e.innerHTML = h + ' : ' + m + ' : ' + s;
		setTimeout(startTimer, 1e3);
	} else {
		d = 0;
		deleteCookie('timestamp');
		e.innerHTML = 'Click Me';
	}
}
</script>

<div id="countdown">Click Me</div>

<script>
var d = getCookie('timestamp');
var e = document.getElementById('countdown');
	e.onclick = clickTimer;
if (d) startTimer();
</script>
Работает. Большое спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработать скрипт таймера Szorstki Работа 0 01.08.2014 13:14
Сафари и скрипт таймера iskander83 Элементы интерфейса 1 01.07.2013 22:10
Скрипт таймера в САФАРИ iskander83 Общие вопросы Javascript 2 01.07.2013 22:08
Помогите найти скрипт таймера amd64 Элементы интерфейса 13 17.11.2010 00:16
Скрипт Двойной ссылки Graaf Общие вопросы Javascript 3 10.08.2009 10:38