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(); не выполняется. |
Ну, согласно документации, должна добавлять контент,т.е. содержимое textarea, полученное здесь var message = $(set_mes).val(); к ...получается опять в textarea?
|
Блин, совсем запутался.Начну сначала.
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')); }) }) Но так не работает. |
ureech,
Что такое set_title, get_title ? |
Что-то куча переменных, которых может и объявлять бы не стоило, а вот $(get_title) - это что такое?
|
Куча переменных, согласен, но это на будущее для дефолтовых настроек.Туда каждый занесёт свои классы.
$(get_title) это я перепутал, сори. Мне удобней с титлом тестить, вот я у себя и переписал. Поправил в посту. |
<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> |
laimas,
при всём уважении, но мне хотелось бы разобраться почему мой код не работает. |
<!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> Запускайте, сверяйте со своим, чего у вас не так и нам не видно. |
Цитата:
Одно дело теория, другое практика.Попробуйте убрать с вашего кода "чего-то от Smarty" и вводить его при исполнении.У меня не работает. А так же в классе .preview есть дргой класс .text-title2 куда следует вывести данные, но они не выводятся. При нажатии на кнопку див открывается только со второго раза и показывает null. Вот такая печальная история. |
Пусть будет так, коль скоро на стихи похоже. Пример же есть практический показ, теории ни сколько не содержит. А вот Попробуйте убрать с вашего кода "чего-то от Smarty" и вводить его при исполнении. скорее с вашей стороны теория и требуется объяснение.
А так же в классе .preview есть дргой класс .text-title2 куда следует вывести данные, но они не выводятся. При нажатии на кнопку див открывается только со второго раза и показывает null. - проблема эта к localStorage не имеет отношения, что сервер помещает в код посредством Smarty и подключает ли вообще, никто на форуме не может догадаться. Причина не работы в данном случае одна - на время обращения к объекту, его на странице нет. А это то-ли var div = document.querySelector('.preview');, это обращение в пустоту (до загрузки DOM), то-ли иные причины..., разбирайтесь. Поменьше бы приводили в описаниях проблем {$post_content}, {include file='com_forum_preview.tpl'} и подобного, что ни о чем не говорит и не способствует пониманию проблем на клиенте, глядишь бы ответ получали бы ранее, и не от одного источника. |
Попытался по истории темы восстановить ваш текст
<!DOCTYPE> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> </head> <body> <textarea id="message" class="ajax_autogrowarea text-mess" name="message" rows="15">message text</textarea> <div style="display:none;" class="preview">{include file='com_forum_preview.tpl'}</div> <button type="button" id="add" style="font-size:16px"/>Предосмотр</button> <script> var set_title = '.text-title';// отсюда получаю var get_title = '.text-title2';// сюда вывожу,находится в диве var button = '#add'; // кнопка var div = '.preview'; // див с шаблоном для вывода var div = document.querySelector(div); var title = $(set_title).val(); $(function(){ localStorage.setItem('title', title); $(button).on('click',function() { $(get_title).html(localStorage.getItem('title')); }) }) </script> </body> </html> в нем по крайней мере два непонятных момента: когда и по какой причине срабатывают строки 18 и 21 Может, не очень верно восстановил,но больше информации нет. Кстати, не стоит переменным давать имена, совпадающие с id или тегами HTML |
Часовой пояс GMT +3, время: 10:56. |