Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   LocalStorage.ч2 (https://javascript.ru/forum/dom-window/61343-localstorage-ch2.html)

ureech 14.02.2016 00:21

LocalStorage.ч2
 
Здравствуйте.Cкрипт для предосмотра сообщений.Не могу добить.
<form>
.......
  <textarea id="message" class="ajax_autogrowarea text-mess" name="message" rows="15">{$post_content}</textarea>
......
<div style="display:none;" class="preview">{include file='com_forum_preview.tpl'}</div>
.....
<button type="button"  id="add"  style="font-size:16px"/>Предосмотр</button>
....
</form>


var set_mes = '.text-mess';// отсюда получаю
var get_mes = '.text-mess2';// сюда вывожу,находится в диве
var button = '#add';        // кнопка
var div = '.preview';       // див с шаблоном для вывода 
var div = document.querySelector(div);


$(button).on('click',function() {
  /**** первое уловие ****/
 if(div.style.display == 'none') {     
   var message = $(set_mes).val();
    $(div).animate({height: 'show'}, 500); 
		var message = $(set_mes).prepend(message); 
	    var message = $(message).html();
	localStorage.setItem('message', message);
	   this.innerHTML = 'Закрыть';
       }else{
 /******второе условие****/	   
    localStorage.clear();
   $(div).animate({height: 'hide'}); 
   this.innerHTML = 'Предосмотр ';
   };
     });
	    if(localStorage.getItem('message')) {
$(get_mes).html(localStorage.getItem('message'));
}

Не хочет нормально выводить.В таком виде не выводит.Но если я не закрою див и перезагружусь и снова открою он выводит
предыдуший текст.
Если я помещаю это
if(localStorage.getItem('message')) {
$(get_mes).html(localStorage.getItem('message'));
}

в первое условие, всё выводится, но при закрытии не удаляется.localStorage.clear(); не выполняется.

ureech 14.02.2016 09:17

Ну, согласно документации, должна добавлять контент,т.е. содержимое textarea, полученное здесь var message = $(set_mes).val(); к ...получается опять в textarea?

ureech 14.02.2016 10:40

Блин, совсем запутался.Начну сначала.
1.Объявил переменные.
var set_title = '.text-title';// отсюда получаю
var get_title = '.text-title2';// сюда вывожу,находится в диве
var button = '#add';        // кнопка
var div = '.preview';       // див с шаблоном для вывода 
var div = document.querySelector(div);

2.Получаю содержимое textarea (строку) и заношу это в переменную
var title = $(set_title).val();

Теперь по идеи я могу эту строку сохранить в хранилище.
$(function(){localStorage.setItem('title', title);})
а по клику изымать её оттуда и помещать в другой див
$(function(){
localStorage.setItem('title', title);
$(button).on('click',function() {
$(get_title).html(localStorage.getItem('title'));
})
})


Но так не работает.

Dilettante_Pro 14.02.2016 10:48

ureech,
Что такое set_title, get_title ?

laimas 14.02.2016 10:50

Что-то куча переменных, которых может и объявлять бы не стоило, а вот $(get_title) - это что такое?

ureech 14.02.2016 11:17

Куча переменных, согласен, но это на будущее для дефолтовых настроек.Туда каждый занесёт свои классы.
$(get_title) это я перепутал, сори. Мне удобней с титлом тестить, вот я у себя и переписал. Поправил в посту.

laimas 14.02.2016 11:45

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script> 
var mem = window['localStorage'] || null;
if(mem) mem['k'] = 'test';
function g() {
    if(mem) alert(mem['k'])
}
</script>     
</head> 
<body>
<button onclick="g()">GO</button>
</body> 
</html>

ureech 14.02.2016 12:34

laimas,
при всём уважении, но мне хотелось бы разобраться почему мой код не работает.

laimas 14.02.2016 13:17

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    localStorage.setItem('title', $('#message').val());
    $('button').on('click', function(e) {
        console.log(localStorage);
        $('.preview').text(localStorage.getItem('title')).show()
        localStorage.removeItem('title');
        console.log(localStorage);
    })
});
</script>     
</head> 

<body>
<form>
<textarea id="message" class="ajax_autogrowarea text-mess" name="message" rows="2">чего-то от Smarty</textarea>
<div style="display:none;" class="preview"></div>
<button type="button"  id="add"  style="font-size:16px">Предосмотр</button>
</form>
</body> 
</html>


Запускайте, сверяйте со своим, чего у вас не так и нам не видно.

ureech 14.02.2016 14:37

Цитата:

Сообщение от laimas
Запускайте, сверяйте со своим, чего у вас не так и нам не видно.

Вы,laimas, стихами заговорили :write: , это радует. Но, вот ваш код с моими параметрами меня совсем не радует.:cray:
Одно дело теория, другое практика.Попробуйте убрать с вашего кода "чего-то от Smarty" и вводить его при исполнении.У меня не работает. А так же в классе .preview есть дргой класс .text-title2 куда следует вывести данные, но они не выводятся. При нажатии на кнопку див открывается только со второго раза и показывает null.
Вот такая печальная история.


Часовой пояс GMT +3, время: 20:51.