- Автосохранение заполненных полей на JavaScript
- Сохранять у чебокса checked при обновлении страницы
- Сохранять выбранное значение select
- Как сделать заставку на сайт
- Показать AdSense только вновь прибывшим на сайт, но не постоянным читателям
- Всплывающее окно при входе на сайт
- document.querySelectorAll JavaScript
- Редактор HTML
- Появляющийся при щелчке блок на CSS
- Посещённые ссылки и localStorage
Что такое localstorage
Пользователь активно работает со страницей: заполняет поля формы, нажимает на кнопки, открывает скрытый блок и т.п. Но при обновлении страницы результат исчезает, HTML-документ возвращаясь в исходное состояние. Чтобы браузер запоминал выбор человека можно воспользоваться локальным хранилищем.
localStorage — «ключ/значение» хранится в браузере, пока пользователь не очистит его локальное хранилище. Можно несколько дней не заходить на веб-проект и по возвращении на сайт увидеть ранее заполненную форму.
Размер localstorage
"A mostly arbitrary limit of five megabytes per origin is suggested. Implementation feedback is welcome and will be used to update this suggestion in the future." [w3.org] То есть рекомендуется предоставлять одному домену как минимум 5 мегабайт. Большинство браузеров используют именно этот лимит.
Что такое sessionStorage
sessionStorage — «ключ/значение» хранится в браузере пока открыта вкладка. То есть можно свободно перемещаться по сайту, обновлять страницу, но не закрывать вкладку или окно браузера.
Как сохранить действие после нажатия кнопки в JS
Задача: если элемент щелчком вывели на экран, то не удалять его в течении длительного времени.
Я тут. Когда вы вернётесь спустя пару дней я снова буду тут.<style> #idVhod { display: none; /* изначально скрыт */ } </style> <button onclick="onclickVhod()">открыть</button> <span id="idVhod">скрытый текст</span> <script> var idVhod = document.getElementById('idVhod'); function onclickVhod() { idVhod.style.display = (idVhod.style.display == 'inline') ? '' : 'inline'; localStorage.setItem('hide', idVhod.style.display); // сохраняем значение в ключ hide } if(localStorage.getItem('hide') == 'inline') { // если значение ключа hide "inline" document.getElementById('idVhod').style.display = 'inline'; } </script>
Автосохранение заполненных полей на JavaScript
Вы никогда не сталкивались с ситуацией, когда заполняешь форму (регистрации или комментариев), нажимаешь кнопку "Отправить", а вам показывается сообщение об ошибке и всё ранее написанное удаляется? Крайне неприятно. Задача: сохранить заполненные поля, пока открыта вкладка. На новой вкладке данные должны пропадать. Базой послужил код с этого сайта.
<textarea id="comment"></textarea> <input type="text" id="fio"> <script> var elements = document.querySelectorAll('input, textarea'); function checkValidity() {}; for (i=0; i<elements.length; i++) { (function(element) { var id = element.getAttribute('id'); element.value = sessionStorage.getItem(id); // обязательно наличие у элементов id element.oninput = function() { sessionStorage.setItem(id, element.value); checkValidity(); }; })(elements[i]); } </script>
Задача: если человек пришёл первый раз и ни разу не менял значение поля даты, то нужно показать ему текущую дату, иначе ту, которую он ввёл последний раз. Практическое применение.
или<input type="date" class="raz" onchange="localStorage.setItem('server', this.value);"> <input type="button" value="очистить localstorage и перезагрузить страницу" onclick="localStorage.clear(); location.reload();" /> или <input type="button" value="удалить localstorage определённого элемента и перезагрузить страницу" onclick="localStorage.removeItem('server'); location.reload();" /> <script> var dataRaz = document.querySelector('input[type="date"].raz'); if(localStorage.getItem('server') === null) { // если localStorage.getItem пустой dataRaz.value = new Date().toJSON().slice(0,10); // сегодняшняя дата } else { dataRaz.value = localStorage.getItem('server'); // последняя дата, на которую изменил пользователь } </script>
Сохранять у чебокса checked при обновлении страницы
<input type="checkbox" id="stat"> <script> document.getElementById('stat').onclick = function() { if(document.getElementById('stat').checked) { localStorage.setItem('stat', "true"); } else { localStorage.setItem('stat', "false"); } } if (localStorage.getItem('stat') == "true") { document.getElementById("stat").setAttribute('checked','checked'); } </script>
Чтобы браузер пользователя запоминал какую радиокнопку тот выбрал в прошлый раз
<input type="radio" checked="checked" name="raz" value="1"/> <input type="radio" name="raz" value="2"/> <input type="radio" name="raz" value="3"/> <script> var raz = document.getElementsByName('raz'); for (var i = 0; i < raz.length; i++) { raz[i].onclick = function() { localStorage.setItem('IRadioRaz', this.value); } } if(localStorage.getItem('IRadioRaz')) { var IRadioRaz = localStorage.getItem('IRadioRaz'); document.querySelector('input[name="raz"][value="' + IRadioRaz + '"]').setAttribute('checked','checked'); } </script>
Сохранять выбранное значение select
<select id="fruit"> <option value="0">1</option> <option value="1">2</option> <option value="2">3</option> <option value="3">4</option> </select> <script> document.getElementById("fruit").onchange = function() { localStorage.setItem('fruit', document.getElementById("fruit").value); } if (localStorage.getItem('fruit')) { document.getElementById("fruit").options[localStorage.getItem('fruit')].selected = true; } </script>sessionstorage один раз javascript
23 комментария:
Как вывести значение ключа, например в div'e, если ввести ключ в input?
LocalStorage: apple (ключ) - fruit (значение)
Например ввожу: apple
Нажимаю Enter и в div'е появляется слово: fruit
< input type="text" id="in" >
< div id="out">< /div>
< script> ? < /script>
document.getElementById("out").innerHTML = localStorage.getItem(this.value);
}
2) Жму Enter (код клавиши вроде 13?)
3) В LocalStorage станет: apple (ключ) - fruit (значение)
Было просто супер!
document.getElementById("in").onchange=raz;
document.getElementById("in1").onchange=raz;
function raz() {
localStorage.setItem(document.getElementById("in").value, document.getElementById("in1").value)
}
document.getElementById("in").oninput = function() {
var result = str.split('=');
localStorage.setItem( ??? всё, что до знака "=" положить в столбец "key" LocalStorage ??? )
localStorage.setItem( ??? всё, что после знака "=" положить в столбец "value" LocalStorage ??? )
}
Хочется чтобы был всё-таки один input.
В input'e знак "=" будет только один раз!
Был бы просто счастлив!
function raz() {
var str = document.getElementById("in").value;
localStorage.setItem(str.split('=')[0], str.split('=')[1]);
}
Item1 - a
Item2 - b
Item3 - c
...
Главное условие:
! При создании записи в LocalStorage не должно быть одинаковых ключей (весь список ключей в LocalStorage должен состоять из РАЗНЫХ уникальных ключей без дублирования)
Процедура:
1) Пользователь вводит имя ключа в поле ввода: Например, Item1
2) Считываем ключ (получаем value поля ввода, в которое пользователь вводил ключ)
3) Очищаем поле ввода
4) Проверяем, есть ли данный ключ в LocalStorage.
Если есть, то выводим его значение в div (в данное примере значение ключа Item1 = a)
Если нет, то создаем новую запись с этим ключом (см. Главное условие)
Заготовка html:
< div id="out">< /div>
< input type="text" id="in" >
< script>
// 2)
document.getElementById("in")
// 3)
input.value = " "
// 4) if ???
... такой ключ есть, следовательно:
document.getElementById("out").innerHTML = localStorage.getItem(this.value);
в противном случае:
localStorage.setItem(document.getElementById("in").value
< /script>
Данная задачка - это высший пилотаж для меня, поэтому я обращаюсь к вам, NMitra.
..вопросик, а как правильно переделать вариант 'Как сохранить действие после нажатия кнопки в JS'
для добавления/удаления Класса ?
.raz {
display: none;
}
</style>
<script>
var idVhod = document.getElementById('idVhod');
function onclickVhod() {
idVhod.className = (idVhod.className == 'raz') ? '' : 'raz';
localStorage.setItem('hide', idVhod.className); // сохраняем значение в ключ hide
}
if(localStorage.getItem('hide') == 'raz') {
document.getElementById('idVhod').className = 'raz';
}
</script>
допустим кликнули на кнопке занесли в localStorage
localStorage.setItem("minibar", "true");
кликнули опять по кнопке поменяли на false
localStorage.setItem("minibar", "false");
и так по кругу
var h = localStorage.getItem('hide');
if (h != 'true' || h == null) {
localStorage.setItem('hide', 'true');
}else{
localStorage.setItem('hide', 'false');
}
}
Спасибо.