Javascript.RU

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

Сохранение свойства css в cookie
Всем доброго времени суток! Прошу помощи в решении небольшой и простой задачи. Найденные решения для аналогичных задач приспособить для моей задачи не получается в виду отсутствия знаний JS.

Сайт:
http://postscriptuum.com/photo

Есть "кнопка" - она скрывает div HTML:
<a id="linkEvent" onClick="hide_show();return false;">Закрыть</a>


JS код (частично взят с другого ресурса)
function hide_show()
{
    //Получаем стиль блока с айди divEvent (для изменения)
    var divEvent=document.getElementById("divEvent").style.display;
    //Получаем стиль ссылки (для изменения)
    var linkEvent=document.getElementById("linkEvent").innerHTML;
    var linkEventFon=document.getElementById("linkEvent").style.backgroundColor;

    //Изначально стиль display у блока равен ""
    //так как он изначально отображается
    //задаем ему стиль block
    if(divEvent=="")divEvent="block";
 
    //Если блок не отображается
    if(divEvent=="none")
    {
        divEvent="block";
        linkEvent="Закрыть";
        linkEventFon='#f1f1f1';
    }
    //или наоборот
    else
    {
        divEvent="none";
        linkEvent="Открыть";
        linkEventFon='#ffffff';
    }
    //Теперь меняем стили у ссылки
    //и блока который хотим скрыть или показать
    document.getElementById("divEvent").style.display=divEvent;
    document.getElementById("linkEvent").innerHTML=linkEvent;
    document.getElementById("linkEvent").style.backgroundColor=linkEventFon;


Задача:
как сделать так, чтобы изменения состояния display записывались в cookie? в JS практически не разбираюсь и прошу помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 07.05.2014, 19:10
Аспирант
Отправить личное сообщение для M-ka Посмотреть профиль Найти все сообщения от M-ka
 
Регистрация: 25.04.2014
Сообщений: 47

doomgart,
http://learn.javascript.ru/cookie

Вообще я больше предпочитаю использовать стореджи, нежели куки, если надо просто записывать и считывать значения в пределах домена. Но если стореджи не поддерживаются из-за древности браузера, тогда можно прибегать к кукам...

Последний раз редактировалось M-ka, 07.05.2014 в 19:13.
Ответить с цитированием
  #3 (permalink)  
Старый 07.05.2014, 19:46
Новичок на форуме
Отправить личное сообщение для doomgart Посмотреть профиль Найти все сообщения от doomgart
 
Регистрация: 07.05.2014
Сообщений: 6

Спасибо за статью, только человеку, мало понимающему JS, статья не сильно помогает. Поэтому, если кто-то может, подскажите более конкретно.
Ответить с цитированием
  #4 (permalink)  
Старый 07.05.2014, 20:06
Аспирант
Отправить личное сообщение для M-ka Посмотреть профиль Найти все сообщения от M-ka
 
Регистрация: 25.04.2014
Сообщений: 47

doomgart,
Функция setCookie(name, value, options) --- копипастишь ее
читаешь "Запись в document.cookie", какие параметры бывают
Передаешь эти три параметра...среди которых вместо value передать divEvent, в котором лежит block, none или пустое
Ответить с цитированием
  #5 (permalink)  
Старый 07.05.2014, 20:51
Новичок на форуме
Отправить личное сообщение для doomgart Посмотреть профиль Найти все сообщения от doomgart
 
Регистрация: 07.05.2014
Сообщений: 6

Вот, большое спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 07.05.2014, 22:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В конце документа, или в обработчик события DOMContentLoaded добавляешь код:
if (localStorage.hasOwnProperty('divEventHidden')) {
    hide_show(); // вообще, более удачное имя - toggle
}

А в саму функцию hide_show добавляешь строчки: в блоке if - localStorage.setItem('divEventHidden', null);
в блоке else - localStorage.removeItem('divEventHidden');
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 07.05.2014, 23:47
Новичок на форуме
Отправить личное сообщение для doomgart Посмотреть профиль Найти все сообщения от doomgart
 
Регистрация: 07.05.2014
Сообщений: 6

Закинул код, что-то не работает.
"
В конце документа, или в обработчик события DOMContentLoaded добавляешь код:
if (localStorage.hasOwnProperty('divEventHidden')) {
hide_show(); // вообще, более удачное имя - toggle
}
"
Это можно закинуть в конец html странички и заключить в теги <script>, или нужно добавить что-то ещё?
Ответить с цитированием
  #8 (permalink)  
Старый 08.05.2014, 10:09
Новичок на форуме
Отправить личное сообщение для doomgart Посмотреть профиль Найти все сообщения от doomgart
 
Регистрация: 07.05.2014
Сообщений: 6

Сообщение от danik.js Посмотреть сообщение
В конце документа, или в обработчик события DOMContentLoaded добавляешь код:
if (localStorage.hasOwnProperty('divEventHidden')) {
    hide_show(); // вообще, более удачное имя - toggle
}

А в саму функцию hide_show добавляешь строчки: в блоке if - localStorage.setItem('divEventHidden', null);
в блоке else - localStorage.removeItem('divEventHidden');
Попробовал добавить
<body onload="hide_show();return false;">
Работает. Если добавить
window.onload = hide_show;
вниз странички, тоже работает. Но оба способа работают только с
if (localStorage.hasOwnProperty('divEventHidden')) {
hide_show();
}
- и я не понимаю, почему.
Так же, при медленном интернет-соединении div то появляется, то исчезает, можно ли избежать такого поведения?
Ответить с цитированием
  #9 (permalink)  
Старый 08.05.2014, 15:04
Аспирант
Отправить личное сообщение для M-ka Посмотреть профиль Найти все сообщения от M-ka
 
Регистрация: 25.04.2014
Сообщений: 47

doomgart,
Так же, при медленном интернет-соединении div то появляется, то исчезает, можно ли избежать такого поведения? --- сделайте по умолчанию скрытым и отображайте только тогда, когда необходимо... ну или вообще генерируйте контент на ходу в местах, где он может присутствовать или отсутствовать в зависимости от полученных параметров...
Ответить с цитированием
  #10 (permalink)  
Старый 08.05.2014, 16:26
Новичок на форуме
Отправить личное сообщение для doomgart Посмотреть профиль Найти все сообщения от doomgart
 
Регистрация: 07.05.2014
Сообщений: 6

Сообщение от M-ka Посмотреть сообщение
doomgart,
сделайте по умолчанию скрытым и отображайте только тогда, когда необходимо... ну или вообще генерируйте контент на ходу в местах, где он может присутствовать или отсутствовать в зависимости от полученных параметров...
Сделать по умолчанию скрытым - нехорошо, потому что в div содержится важная информация для всех новоприбывающих, и она важна для ознакомления. Но, со временем, у пользователей может появиться желание расширить рабочую область за счёт сжатия информации в этом div'е. Поэтому я прошу помощи, т.к. только начинаю изучать JS на Вашем ресурсе.
Вопрос:
1. Будет ли с cookie работать быстрее, или нет?
2. Зачем нужна строка
if (localStorage.hasOwnProperty('divEventHidden')) {
hide_show();
}

если есть
<body onload="hide_show();return false;">

или
window.onload = hide_show;
?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение вычисленного значения css свойства FanAizu jQuery 2 12.03.2014 20:30
Изменение css свойства Rumis jQuery 2 21.05.2013 11:55
CSS свойства :before и :after - нужен хелп :) seoguru (X)HTML/CSS 1 24.01.2013 23:13
Использование css свойства display для подменю Lex4e Общие вопросы Javascript 7 07.01.2010 22:02
Запретить свойства из CSS SunnyDay Общие вопросы Javascript 11 29.09.2008 14:30