Не срабатывает сохранение стиля в 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, время: 18:46. |