При обновление страницы весь `.append()` исчезает

114
15 июня 2019, 08:30

Объясните, пожалуйста.

Как добавить элемент на страницу через .append(), но так, чтобы при обновление страницы добавленный элемент не исчезал?

$('#button').on('click', function(){
    $('body').append('<p>test</p>')
});
Answer 1

Раз уж вы заюзали jQuery, то кода будет поменьше. Я соглашусь с комментарием про localStorage или БД, однако ответа я не увидел, поэтому покажу идею с localStorage, на мой взгляд этот подход более простой. Дополним метод клика:

$('#button').on('click', function(){
    const element = '<p>test</p>'; // положили в переменную наш элемент
    $('body').append(element); // дабавили к body наш элемент
    const items = localStorage.getItem('appended'); // получили по ключу свой элемент
    var elements = JSON.parse(items) || []; // распарсили полученный элемент
    elements.push(element); // добавили в массив
    localStorage.setItem('appended', JSON.stringify(elements)); // записали новое значение
});

А также добавим блок кода, который будет добавлять элементы после того, как страница обновилась:

$(document).ready(function() {
    const items = localStorage.getItem('appended'); // получили по ключу свой элемент
    var elements = JSON.parse(items) || []; // распарсили полученный элемент
    // пройдем по элементам и добавим их к body
    for (var index = 0; index < elements.length; index++) {
       $('body').append(elements[index]); // дабавили к body наш элемент
    }
});

Полезные ссылки:

  • Window.localStorage
  • Storage.setItem()
  • Storage.getItem()
  • Storage.removeItem()
  • JSON.stringify()
  • JSON.parse()
Answer 2

Использовать куки

Статические решение: Изначально скрывать данный блок до поры до времени, а потом по клику показывать? В куки клиенту прописывать, что данный блок уже видимый и при повторном показе показывать сразу.

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

READ ALSO
Проблема с nodeJS и регистрацией через mysql

Проблема с nodeJS и регистрацией через mysql

у меня возникла странная, как мне сейчас кажется, проблемаДо этого с базами я не работал, поэтому прошу помощи у специалистов!

133
Как узнать что все объекты нажаты?

Как узнать что все объекты нажаты?

Есть объекты div с idКак узнать что все объекты нажаты?

95
Работа с input type=&ldquo;text&rdquo;

Работа с input type=“text”

Требуется из input type="text" взять введенное пользователем значение и, по клику на кнопку, добавить к элементу с помощью JavaScriptПытался через onClick="document

108
Вызов функции через onClick JS

Вызов функции через onClick JS

Имеется таблица 3х3При клике на какой-либо элемент он становится прозрачным

96