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.