Skip to content

Loyiha - Hodisa tinglovchisi (Event Listener)

Event Listener'dan foydalanish

Ushbu loyiha avvalgi loyihaning takomillashtirilgan nusxasidir. Endi biz onclick atributlari o'rniga Hodisa tinglovchilari (Event Listeners) dan foydalanamiz.


Nima uchun Event Listener?

addEventListener() dan foydalanish quyidagilarni osonlashtiradi:

  • HTML va JavaScript-ni bir-biridan ajratish
  • Bitta elementga bir nechta hodisalarni qo'shish
  • Kattaroq loyihalarda tozaroq kod yozish

To'liq kod

HTML kodi

html
<h2>Hisoblagich</h2>

<p id="count" style="font-size:40px;">0</p>
<p id="message"></p>

<button id="btnPlus">+</button>
<button id="btnMinus">-</button>
<button id="btnReset">Reset</button>
<button id="btnSave">Saqlash</button>
<button id="btnLoad">Yuklash</button>

<script src="counter.js"></script>

counter.js (JavaScript)

js
document.addEventListener('DOMContentLoaded', function () {
  // Hisoblagichni e'lon qilish
  let count = 0

  // Element o'zgaruvchilari
  const countEl = document.getElementById('count')
  const msgEl = document.getElementById('message')
  const btnPlus = document.getElementById('btnPlus')
  const btnMinus = document.getElementById('btnMinus')
  const btnReset = document.getElementById('btnReset')
  const btnSave = document.getElementById('btnSave')
  const btnLoad = document.getElementById('btnLoad')

  // Hodisa tinglovchilarini qo'shish
  btnPlus.addEventListener('click', increaseCount)
  btnMinus.addEventListener('click', decreaseCount)
  btnReset.addEventListener('click', resetCount)
  btnSave.addEventListener('click', saveCount)
  btnLoad.addEventListener('click', loadCount)

  // Hisoblagichni ko'rsatish funksiyasi
  function updateCount() {
    countEl.innerHTML = count
  }

  // Xabar ko'rsatish funksiyasi
  function showMessage(text) {
    msgEl.innerHTML = text
    setTimeout(function () {
      msgEl.innerHTML = ''
    }, 3000)
  }

  // Oshirish funksiyasi
  function increaseCount() {
    count++
    updateCount()
  }

  // Kamaytirish funksiyasi
  function decreaseCount() {
    count--
    updateCount()
  }

  // Nolga tushirish funksiyasi
  function resetCount() {
    count = 0
    updateCount()
  }

  // Saqlash funksiyasi
  function saveCount() {
    localStorage.setItem('count', count)
    showMessage('Saqlandi!')
  }

  // Yuklash funksiyasi
  function loadCount() {
    let saved = localStorage.getItem('count')
    if (saved !== null) {
      count = Number(saved)
      showMessage('Yuklandi!')
    }
    updateCount()
  }
})

Yaxshilanishlar

  • JavaScript tashqi faylga (counter.js) ko'chirildi.
  • DOMContentLoaded ishlatildi, shunda JavaScript faqat HTML tayyor bo'lgandan keyin ishlaydi.
  • Element o'zgaruvchilari va kichik funksiyalar yordamida tozaroq tuzilma.
  • "Saqlandi!" va "Yuklandi!" kabi vaqtinchalik xabarlar qo'shildi.

Nima uchun DOMContentLoaded ishlatiladi?

Tashqi JavaScript faylidan foydalanganda, brauzer skriptni HTML hali to'liq tayyor bo'lmasdan yuklab olishi mumkin. Shuning uchun biz quyidagidan foydalanamiz:

js
document.addEventListener('DOMContentLoaded', function () {
  // JavaScript kodi bu yerda
})

Bu shuni anglatadiki: JavaScript kodini sahifa HTML-ni yuklab bo'lgandan keyin ishga tushir.