@Nerubik

Почему createElement каждый раз умножает элементы на два?

Пытаюсь создать кнопку, которая будет добавлять пользовательский элемент. В него должны будут вписываться пользовательские данные, но каждый раз при нажатии на эту кнопку, количество элементов умножается на 2. То есть сначала появляется 1, потом 2, 4, 8 и так далее. Никак не могу понять в чем проблема.

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

			render() {
				let html = document.importNode(myWebCompTemplate.content, true);
				let Test = document.querySelector("#typeId")
				this.attachShadow({ mode: 'open' })
				this.shadowRoot.appendChild(html);
				let colorNew = {
					name: this.getAttribute('name') || undefined,
					type: this.getAttribute('type') || undefined,
					color: this.getAttribute('color') || undefined
				}
				this.shadowRoot.querySelector('.name').textContent = this.getAttribute('name')
				this.shadowRoot.querySelector('.type').textContent = this.getAttribute('type')
				this.shadowRoot.querySelector('.color').textContent = this.getAttribute('color')

				Test.addEventListener("click", function (e) {
					let nod = document.createElement('my-webcomp')
					let parent = document.body.appendChild(nod)
					parent.shadowRoot.querySelector('#type').textContent = this.value
				})
			}

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

			disconnectedCallback() {

			}

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

			attributeChangedCallback(name, oldValue, newValue) {
				this.render()
			}
		}
		customElements.define("my-webcomp", MyElement);


<template id="myWebCompTemplate">
		<p class="name"></p>
		<p id='type'
			class="type"></p>
		<p class="color"></p>
	</template>
	<my-webcomp name="Серый хомяк"
		type="main"
		color="#3f3f3f"
		id="myWebComp">
	</my-webcomp>
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы