Skip to content

Loyiha - To-Do ro'yxati (Rejalar ro'yxati)

Ushbu loyihada siz To-Do ro'yxatini qurasiz. Siz vazifalarni qo'shishingiz, o'chirishingiz va barchasini tozalashingiz mumkin. Vazifalar brauzerning localStorage xotirasida saqlanadi.


Siz nimalarni o'rganasiz?

  • Elementlarni massivda saqlashni
  • Massivdan elementlarni o'chirishni
  • JavaScript yordamida ro'yxatni ekranda ko'rsatishni
  • localStorage yordamida ma'lumotlarni saqlash va yuklashni

1. HTML hosil qilish

Avval quyidagilarga ega HTML sahifasini yarating:

  • id="task" bo'lgan kiritish maydoni
  • addTask() funksiyasini chaqiradigan tugma
  • id="list" bo'lgan tartiblanmagan ro'yxat (<ul>)
  • clearAll() funksiyasini chaqiradigan tozalash tugmasi
html
<!DOCTYPE html>
<html>
  <body>
    <h2>To-Do ro'yxati</h2>

    <input id="task" placeholder="Yangi vazifa" />
    <button onclick="addTask()">Qo'shish</button>

    <ul id="list"></ul>

    <button onclick="clearAll()">Barchasini tozalash</button>

    <script>
      // Vazifalar massivi
      let tasks = []
    </script>
  </body>
</html>

2. Ko'rsatish funksiyasini qo'shish

displayTasks() funksiyasi ro'yxatni yangilab ekranda ko'rsatadi:

js
function displayTasks() {
  let html = ''
  for (let i = 0; i < tasks.length; i++) {
    html +=
      '<li>' +
      tasks[i] +
      ' <button onclick="removeTask(' +
      i +
      ')">x</button></li>'
  }
  document.getElementById('list').innerHTML = html
}

Eslatma

Ro'yxat o'zgargan har safar displayTasks() funksiyasi chaqirilishi kerak.


3. Vazifa qo'shish funksiyasi

js
function addTask() {
  let taskInput = document.getElementById('task')
  let text = taskInput.value
  if (text === '') {
    return
  }
  tasks.push(text)
  taskInput.value = ''
  saveTasks()
  displayTasks()
}

4. Vazifani o'chirish funksiyasi

Vazifani indeksi bo'yicha o'chirish:

js
function removeTask(i) {
  tasks.splice(i, 1)
  saveTasks()
  displayTasks()
}

Eslatma

Massivning splice(i, 1) metodi i pozitsiyasidan 1 ta elementni o'chiradi.


5. Saqlash va Yuklash funksiyalari

localStorage massivlarni to'g'ridan-to'g'ri saqlay olmaydi, shuning uchun biz ularni matnga o'tkazamiz.

js
// Vazifalarni saqlash
function saveTasks() {
  localStorage.setItem('tasks', JSON.stringify(tasks))
}

// Vazifalarni yuklash
function loadTasks() {
  let saved = localStorage.getItem('tasks')
  if (saved !== null) {
    tasks = JSON.parse(saved)
  }
}

To'liq JavaScript kodi

js
let tasks = []

function displayTasks() {
  let html = ''
  for (let i = 0; i < tasks.length; i++) {
    html +=
      '<li>' +
      tasks[i] +
      ' <button onclick="removeTask(' +
      i +
      ')">x</button></li>'
  }
  document.getElementById('list').innerHTML = html
}

function addTask() {
  let taskInput = document.getElementById('task')
  let text = taskInput.value
  if (text === '') return
  tasks.push(text)
  taskInput.value = ''
  saveTasks()
  displayTasks()
}

function removeTask(i) {
  tasks.splice(i, 1)
  saveTasks()
  displayTasks()
}

function clearAll() {
  tasks = []
  saveTasks()
  displayTasks()
}

function saveTasks() {
  localStorage.setItem('tasks', JSON.stringify(tasks))
}

function loadTasks() {
  let saved = localStorage.getItem('tasks')
  if (saved !== null) {
    tasks = JSON.parse(saved)
  }
}

// Sahifa yuklanganda vazifalarni yuklash va ko'rsatish
loadTasks()
displayTasks()

Mashqlar

  1. Agar foydalanuvchi bo'sh vazifa qo'shmoqchi bo'lsa, ogohlantirish (alert) chiqaring.
  2. Foydalanuvchi "Enter" tugmasini bosganda ham vazifa qo'shiladigan qiling.
  3. Vazifa saqlanganda "Saqlandi!" degan xabar ko'rsating.

Bonus (Keyingi bosqich)

  • Vazifalarni bajarilgan deb belgilash (ustidan chiziq tortish)
  • Vazifalarni filtrlash: Hammasi / Faol / Bajarilgan
  • Vazifani tahrirlash (Edit) xususiyatini qo'shish