Javascript.RU

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

js и localStorage
уважаемые, помогите пожалуйста
есть js код который реализует скрытие/показ сайдбара. как сделать запоминание через локальное хранилище?
ума не приложу как это реализовать, не когда не сталкивался
<script type="text/javascript">
<!--
    var d = document,
        sidebar = d.querySelector('.right'),
        content = d.querySelector('.content');
    d.querySelector('button').addEventListener('click', function(){
        sidebar.classList.toggle('hide');
        content.classList.toggle('stretch');
    }, false);
-->
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2015, 13:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,235

Сообщение от valetu
ума не приложу как это реализовать
У тебя есть два "элемента"
sidebar
content

которые меняют состояния по типу "ВКЛ/ВЫКЛ"
sidebar.classList.toggle('hide');
// и
content.classList.toggle('stretch');

Тебе остается:
- при смене состояния, записать в сторадж "какие они сейчас"
- после загрузки документа, прочитать те состояния и перевести те два элемента в эти состояния
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2015, 13:53
Новичок на форуме
Отправить личное сообщение для valetu Посмотреть профиль Найти все сообщения от valetu
 
Регистрация: 15.05.2015
Сообщений: 7

всё равно не понятно. я более менее разобрался как вытащить значения из хранилища, а вот как их сохранить так и не понял
Ответить с цитированием
  #4 (permalink)  
Старый 15.05.2015, 14:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,235

Сообщение от valetu
я более менее разобрался как вытащить значения из хранилища, а вот как их сохранить так и не понял
Просто не там искал...
http://htmlbook.ru/html5/storage
Ответить с цитированием
  #5 (permalink)  
Старый 15.05.2015, 15:02
Новичок на форуме
Отправить личное сообщение для valetu Посмотреть профиль Найти все сообщения от valetu
 
Регистрация: 15.05.2015
Сообщений: 7

Сообщение от ksa Посмотреть сообщение
Просто не там искал...
http://htmlbook.ru/html5/storage
там и хорошо
если б понял - не спросил
Ответить с цитированием
  #6 (permalink)  
Старый 15.05.2015, 15:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,235

Сообщение от valetu
там и хорошо
если б понял - не спросил
Что можно не понять из такого примера?
var foo = localStorage.getItem("bar");
// ...
localStorage.setItem("bar", foo);

Тест
localStorage.setItem("bar", 'foo');
// ...
var foo = localStorage.getItem("bar");
alert(foo);
Ответить с цитированием
  #7 (permalink)  
Старый 15.05.2015, 16:08
Новичок на форуме
Отправить личное сообщение для valetu Посмотреть профиль Найти все сообщения от valetu
 
Регистрация: 15.05.2015
Сообщений: 7

Сообщение от ksa
Что можно не понять из такого примера?
не все же такие умные
Ответить с цитированием
  #8 (permalink)  
Старый 15.05.2015, 17:18
Аспирант
Отправить личное сообщение для Endy Посмотреть профиль Найти все сообщения от Endy
 
Регистрация: 15.05.2015
Сообщений: 41

valetu,если еще актуально,вот навгокодил малость))
<!DOCTYPE html>
<html>
<head>
    <style>
        .slider {
            width: 500px;
            background: #00ff93;
        }
        
        .hide {
            display: none;
        }
    </style>
</head>
<body>
   <button>Hide/Show</button>
    <div class="slider">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. In debitis nihil deleniti id beatae tenetur laudantium eligendi cumque earum, rerum sapiente nostrum illum vitae delectus eaque totam vel perspiciatis, praesentium minus nisi sint consequuntur suscipit nulla quia deserunt. Laudantium officia magnam voluptatem, id sapiente ducimus possimus temporibus dignissimos perferendis, optio ex, aut enim hic cupiditate doloremque sint illo repellendus, commodi voluptatum distinctio blanditiis impedit. Deleniti quo pariatur consectetur eos error facere soluta doloribus minus reiciendis maiores praesentium, libero expedita voluptate aut est id earum debitis odio modi cumque ducimus, aliquam repudiandae! Facere obcaecati natus quasi omnis dolorem quidem aperiam eos, fugiat sint ex inventore ut saepe eveniet eaque non tenetur necessitatibus corporis, veritatis magnam a culpa voluptate aut, dignissimos ratione repellat. Vero exercitationem nulla, aperiam sit esse ea repellendus nihil inventore minima asperiores tempore blanditiis error architecto est laboriosam a sint modi, laborum deleniti provident dolorem perferendis in. Officiis voluptas nulla recusandae deserunt voluptate incidunt cumque tempora molestias repudiandae esse. Enim alias ab omnis quibusdam magnam cupiditate, eius consequuntur illum vitae, modi quod neque amet veritatis commodi aspernatur accusamus tenetur quisquam reprehenderit doloremque. Eligendi tenetur quae laudantium. Minus corporis nemo dolore nulla magni error maiores quis cum dolorem veritatis dolorum optio pariatur expedita est dolor, reprehenderit asperiores exercitationem aut magnam dolores ipsum! Ab eius quos, fugiat explicabo voluptatem unde fuga doloribus recusandae labore veniam aperiam ea quidem tenetur suscipit ut dicta voluptates corrupti praesentium neque deserunt officiis porro alias. Aliquam, ut, voluptatem! Est tempora assumenda illum adipisci labore voluptatibus eligendi repellendus, facere, molestiae sapiente maxime dolore harum error, ab molestias voluptate id atque. Consectetur voluptatem autem nulla consequuntur quam, minus doloribus est repudiandae obcaecati maiores ex assumenda adipisci tempora aut asperiores, sequi officiis vel odio odit quibusdam repellat alias illum velit nam. Voluptas ex, culpa blanditiis ipsa excepturi dolorum itaque.</p>
    </div>
    <script>
            var slider = document.querySelector(".slider"),btn = document.getElementsByTagName("button")[0];
    
    if (localStorage.getItem("hide") === "true") {
        slider.classList.remove("hide");
    } else if(localStorage.getItem("hide") != "true" && localStorage.getItem("hide") != null) {
         slider.classList.add("hide");

    }
    

    btn.onclick = function(){
        if (localStorage.getItem("hide") == null) {
            localStorage.setItem("hide","true");
           slider.classList.remove("hide");
        }
        
        if (localStorage.getItem("hide") === "true" && slider.classList.contains('hide')) {
             slider.classList.remove("hide");
             localStorage.setItem("hide","false");
        }else if(localStorage.getItem("hide") === "true" && slider.classList.contains('hide') != "true"){
            slider.classList.add("hide");
            localStorage.setItem("hide","false");
        }else if(localStorage.getItem("hide") === "false") {
                slider.classList.remove("hide");
             localStorage.setItem("hide","true");

        }
        
        
        
    };
    
    </script>
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 15.05.2015, 17:42
Новичок на форуме
Отправить личное сообщение для valetu Посмотреть профиль Найти все сообщения от valetu
 
Регистрация: 15.05.2015
Сообщений: 7

Endy,
спасибо большое, но мне кажется это немного не то. у Вас просто скрывается блок и сделать это можно короче по коду (хотя я может и не прав, что мой способ будет таким же)
у меня загвоздка именно в моём скрипте, что при нажатии кнопки заменяются свойства для блоков
<script type="text/javascript">
<!--
    var d = document,
        sidebar = d.querySelector('.right'),
        content = d.querySelector('.content');
    d.querySelector('button').addEventListener('click', function(){
        sidebar.classList.toggle('hide');
        content.classList.toggle('stretch');
    }, false);
-->
</script>

.content {
    left: 150px;
    right: 150px;
    background: #bfc9e8;
    transition: right 1s linear;
}
.right {
    right: 0;
    width: 150px;
    overflow: hidden;
    background: #99d9ea;
    transition: width 1s linear;
}

меняются
.stretch {
    right: 0;    
}
.hide {
    width: 0;
}

не могу разобраться как два свойства заставить сохраняться в хранилище

P.S. вроде что чо сделал

Последний раз редактировалось valetu, 15.05.2015 в 18:27. Причина: почти решил проблему
Ответить с цитированием
  #10 (permalink)  
Старый 15.05.2015, 18:34
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

valetu,
так а что именно не понятно?
//устанавливаем значение
localStorage.setItem("sidebar", 'la-la-la');
// получаем значение
var sidebar = localStorage.getItem("sidebar");
console.log(sidebar);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Вывыод контента через JS inet_boy Элементы интерфейса 0 18.11.2013 03:00
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05