Задача №4

На сторінці міститься певна кількість кнопок та інпутів. Підраховувати загальну кількість кліків окремо на кнопках й окремо на інпутах.


Рішення:

Натискань на кнопки:

Натискань на інпути:

'use strict'

class Counter {
  inputClicks = 0
  buttonClicks = 0
  inputCounterEl
  buttonCounterEl

  /**
   * @param {string} inputCounterSelector
   * @param {string} buttonCounterSelectorEl
   */
  constructor(inputCounterSelector, buttonCounterSelectorEl) {
    this.inputCounterEl = document.querySelector(inputCounterSelector)
    this.buttonCounterEl = document.querySelector(buttonCounterSelectorEl)

    if (!this.inputCounterEl || !this.buttonCounterEl)
      throw new ReferenceError("Can't find counter HTML elements.")

    this.updateCounters()
  }

  updateCounters() {
    this.inputCounterEl.textContent = String(this.inputClicks)
    this.buttonCounterEl.textContent = String(this.buttonClicks)
  }

  /**
   * @param {Event} e
   */
  handleInteractions({target}) {
    if (target.closest('button')) this.buttonClicks++
    else if (target.closest('input')) this.inputClicks++

    this.updateCounters()
  }
}

try {
  const counter = new Counter('.js-input-counter', '.js-button-counter')
  const container = document.querySelector('.js-app')

  container.addEventListener('click', counter.handleInteractions.bind(counter))
} catch (error) {
  console.error(error)
}