Не срабатывает сохранение стиля в cookie
Необходимо, чтобы по клику - стиль сохранился в cookie и между переходами по сайту блок не появлялся.
Что я делаю не так?
jQuery(document).ready(function(){
jQuery('.ppp .close').click(function(){
jQuery.cookie('.ppp').css("display", "none");
});
});
Ниже добавил jquery.cookie.js
jQuery.cookie=function(b,j,m){if(typeof j!="undefined"){m=m||{};if(j===null){j="";m.expires=-1}var e="";if(m.expires&&(typeof m.expires=="number"||m.expires.toUTCString)){var f;if(typeof m.expires=="number"){f=new Date();f.setTime(f.getTime()+(m.expires*24*60*60*1000))}else{f=m.expires}e="; expires="+f.toUTCString()}var l=m.path?"; path="+(m.path):"";var g=m.domain?"; domain="+(m.domain):"";var a=m.secure?"; secure":"";document.cookie=[b,"=",encodeURIComponent(j),e,l,g,a].join("")}else{var d=null;if(document.cookie&&document.cookie!=""){var k=document.cookie.split(";");for(var h=0;h<k.length;h++){var c=jQuery.trim(k[h]);if(c.substring(0,b.length+1)==(b+"=")){d=decodeURIComponent(c.substring(b.length+1));break}}}return d}};
Но пишет ошибку: Uncaught TypeError: Cannot read property 'css' of null |
Цитата:
Если не требуется передавать информацию на сервер, то лучше использовать localStorage, а не cookies. |
Цитата:
Код:
<div id="ppp">
var idPC = document.getElementById('ppp_close');
var idPB = document.getElementById('ppp');
function onclickPC() {
idPB.style.display = (idPB.style.display == 'block') ? '' : 'none';
localStorage.setItem('hide', idPB.style.display);
}
if(localStorage.getItem('hide') == 'none') {
document.getElementById('ppp').style.display = 'none';
}
|
Цитата:
|
Цитата:
var limit = 24 * 3600 * 1000; // 24 часа
var localStorageInitTime = localStorage.getItem('localStorageInitTime');
var idPC = document.getElementById('ppp_close');
var idPB = document.getElementById('ppp');
function onclickPC() {
idPB.style.display = (idPB.style.display == 'block') ? '' : 'none';
localStorage.setItem('hide', idPB.style.display);
}
if (localStorageInitTime === null) {
if(localStorage.getItem('hide') == 'none') {
document.getElementById('ppp').style.display = 'none';
}
localStorage.setItem('localStorageInitTime', +new Date());
} else if(+new Date() - localStorageInitTime > limit) {
localStorage.clear();
localStorage.setItem('localStorageInitTime', +new Date());
}
|
Quark_,
var limit = 24 * 3600 * 1000; // 24 часа
var localStorageInitTime = localStorage.getItem('localStorageInitTime') || new Date();
var delta = new Date() - localStorageInitTime;
if(delta > limit) localStorage.removeItem('hide');
var idPC = document.getElementById('ppp_close');
var idPB = document.getElementById('ppp');
if(localStorage.getItem('hide') == 'none') {
idPB.style.display = 'none';
}
function onclickPC() {
idPB.style.display = 'none';
localStorage.setItem('hide', 'none');
localStorage.setItem('localStorageInitTime', +new Date());
}
|
рони,
А как через консоль можно проверить, что по клику запустился таймер? Вчера скрыл блок, через 24 часа зашел на сайт и он не появился (в стилях по-прежнему в display:none). |
localStorage скрыть на сутки
Quark_,
для примера 5 сек, успейте перезагрузить после клика.
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#ppp {
display: none;
}
#ppp.open {
display: block;
}
</style>
</head>
<body>
<div id="ppp">
ppp
<button type="button" id="ppp_close">ppp_close</button>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var limit = 5000; //24 * 3600 * 1000; // 24 часа
var localStorageInitTime = localStorage.getItem('localStorageInitTime') || new Date() - limit;
var delta = new Date() - localStorageInitTime;
console.log(delta >= limit)//true - время вышло
var idPC = document.getElementById('ppp_close');
var idPB = document.getElementById('ppp');
if (delta >= limit) {
idPB.classList.add('open');
}
function onclickPC() {
idPB.classList.remove('open');
localStorage.setItem('localStorageInitTime', +new Date());
}
idPC.addEventListener('click', onclickPC)
});
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 00:40. |