@Nerubik

Как сделать так, чтобы при обновлении страницы элементы, созданные на js не пропадали?

Здравствуйте! Мне необходимо сделать так, чтобы пользовательские элементы не пропадали при перезагрузке страницы. Я понимаю, что для этого нужен localStorage, но никак не могу его применить на своем коде. Буду очень признателен за помощь.

class MyElement extends HTMLElement {
			constructor() {
				super();
			}

			render() {
				let html = document.importNode(myWebCompTemplate.content, true);
				this.attachShadow({ mode: 'open' })
				this.shadowRoot.appendChild(html);
				let bob = this
				place.insertAdjacentElement('afterbegin', bob);
				let but = this.shadowRoot.querySelector('.webButton')
				but.addEventListener('click', function (e) {
					let color = but.previousElementSibling
					let type = color.previousElementSibling
					let name = type.previousElementSibling
					let square = name.previousElementSibling
					if (but.getAttribute('toggle') == 'on') {
						but.setAttribute('toggle', 'off')
						openModalChange()
					} else {
						type.firstElementChild.textContent = document.querySelector('#typeChange').value
						name.firstElementChild.textContent = document.querySelector('#nameInpCh').value
						color.firstElementChild.textContent = document.querySelector('.helpBlockCh').getAttribute('temp')
						square.firstElementChild.style.backgroundColor = document.querySelector('.helpBlockCh').getAttribute('temp')
						but.setAttribute('toggle', 'on')
						document.querySelector('#typeChange').value = 'Main'
						document.querySelector('#nameInpCh').value = ''
					}
				})

				let del = this.shadowRoot.querySelector('.delete')
				del.addEventListener('click', function (e) {
					bob.remove()
				})
				this.draggable = true
			}

			connectedCallback() {
				if (!this.rendered) {
					this.render();
					this.rendered = true;
				}
			}

			disconnectedCallback() {

			}

			static get observedAttributes() {
				return ['name', 'type', 'color'];
			}

			attributeChangedCallback(name, oldValue, newValue) {
				this.render()
			}
		}

		let Test = document.querySelector(".popup-button")

		Test.addEventListener("click", function (e) {
			let nod = document.createElement('my-webcomp')
			let parent = document.body.appendChild(nod)
			let colorObj = {}
			parent.shadowRoot.querySelector('#type').textContent = document.querySelector('#typeId').value
			parent.shadowRoot.querySelector('.name').textContent = document.querySelector('#nameInp').value
			parent.shadowRoot.querySelector('.color').textContent = document.querySelector('.helpBlock').getAttribute('temp')
			parent.shadowRoot.querySelector('.color-square').style.backgroundColor = document.querySelector('.helpBlock').getAttribute('temp')
			colorObj = {
				name: document.querySelector('#nameInp').value,
				type: document.querySelector('#typeId').value,
				color: document.querySelector('.helpBlock').getAttribute('temp')
			}


			localStorage.setItem('color' + colorObj.name, JSON.stringify(colorObj));
			let colorren = JSON.parse(localStorage.getItem('color' + colorObj.name));

			document.querySelector('#typeId').value = 'Main'
			document.querySelector('#nameInp').value = ''
		})

		customElements.define("my-webcomp", MyElement);
  • Вопрос задан
  • 456 просмотров
Решения вопроса 1
SemanticMoscow
@SemanticMoscow
отбросьте весь код.
начните с чистого листа.
выполните 3 простых действия.
1. получить в переменную некое значение.
2. записать имя и значение в localStorage
3. при загрузке страницы, по событию onload, проверить присутствует ли в localStorage необходимая информация - если true,
то возвращаемся к своему коду и всё у вас получится
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект