Показать сообщение отдельно
  #3 (permalink)  
Старый 23.12.2019, 08:51
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от gunner17
должна быть только одна функция подсчета
кликов, но использоваться для любого количества кнопок (подразумевается,
что кнопок может быть как одна, так и пара сотен...)
Сообщение от gunner17
Количество нажатий для каждой кнопки должно
хранится в замыкании
Например так (переменная реально хранится в замыкании)...
<button is="click-counter"></button>
<button is="click-counter"></button>
<button is="click-counter"></button>

<style>
[is="click-counter"]::before { content: "Click me! "}
</style>

<script>
class ClickCounter extends HTMLButtonElement {
	constructor() {
		super();
		const clickHandler = this.counterClosure;
		this.addEventListener("click", clickHandler);
		clickHandler();
	}
	
	get counterClosure() {
		let counter = 0;
		return () => this.textContent = counter++;
	}
}
customElements.define("click-counter", ClickCounter, { extends: "button" });
</script>
Ответить с цитированием