JavaScript实现某个功能 | 青训营

102 阅读3分钟

使用JavaScript实现一个待办事项列表应用

介绍

在这个项目示例中,我们将使用JavaScript实现一个简单的待办事项列表应用。该应用允许用户添加、编辑、完成和删除待办事项。我们将使用HTML、CSS和JavaScript来构建这个应用,并使用本地存储来保存用户的待办事项。

功能

我们的待办事项列表应用将具有以下功能:

  1. 添加待办事项:用户可以通过输入框添加新的待办事项。
  2. 显示待办事项列表:应用将显示用户添加的待办事项列表。
  3. 编辑待办事项:用户可以编辑已存在的待办事项。
  4. 完成待办事项:用户可以将待办事项标记为已完成。
  5. 删除待办事项:用户可以删除已完成的待办事项。

技术栈

我们将使用以下技术来实现这个项目:

  • HTML:用于构建应用的基本结构。
  • CSS:用于样式化应用的外观和布局。
  • JavaScript:用于处理用户的交互和实现应用的功能。
  • 本地存储:用于保存用户的待办事项。

实现步骤

步骤 1:设置HTML结构

首先,我们需要设置HTML结构来容纳我们的待办事项列表应用。以下是一个基本的HTML结构示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Todo List App</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="container">
    <h1>Todo List</h1>
    <form id="todo-form">
      <input type="text" id="todo-input" placeholder="Add a new todo">
      <button type="submit">Add</button>
    </form>
    <ul id="todo-list"></ul>
  </div>
  <script src="app.js"></script>
</body>
</html>

步骤 2:设置CSS样式

接下来,我们需要设置CSS样式来美化应用的外观。以下是一个基本的CSS样式示例:

.container {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}

h1 {
  text-align: center;
}

form {
  margin-bottom: 20px;
}

input[type="text"] {
  width: 100%;
  padding: 10px;
  font-size: 16px;
}

button {
  padding: 10px 20px;
  font-size: 16px;
}

ul {
  list-style-type: none;
}

li {
  margin-bottom: 10px;
}

.completed {
  text-decoration: line-through;
  color: gray;
}

步骤 3:实现JavaScript功能

现在,我们将使用JavaScript来实现待办事项列表应用的功能。以下是一个基本的JavaScript示例:

// 获取DOM元素
const todoForm = document.getElementById('todo-form');
const todoInput = document.getElementById('todo-input');
const todoList = document.getElementById('todo-list');

// 从本地存储中获取待办事项列表
let todos = JSON.parse(localStorage.getItem('todos')) || [];

// 渲染待办事项列表
function renderTodos() {
  todoList.innerHTML = '';

  todos.forEach((todo, index) => {
    const li = document.createElement('li');
    li.textContent = todo.text;
    if (todo.completed) {
      li.classList.add('completed');
    }

    // 添加编辑按钮
    const editButton = document.createElement('button');
    editButton.textContent = 'Edit';
    editButton.addEventListener('click', () => {
      editTodo(index);
    });
    li.appendChild(editButton);

    // 添加完成按钮
    const completeButton = document.createElement('button');
    completeButton.textContent = 'Complete';
    completeButton.addEventListener('click', () => {
      toggleComplete(index);
    });
    li.appendChild(completeButton);

    // 添加删除按钮
    const deleteButton = document.createElement('button');
    deleteButton.textContent = 'Delete';
    deleteButton.addEventListener('click', () => {
      deleteTodo(index);
    });
    li.appendChild(deleteButton);

    todoList.appendChild(li);
  });
}

// 添加待办事项
function addTodo() {
  const text = todoInput.value.trim();
  if (text !== '') {
    const todo = {
      text,
      completed: false
    };

    todos.push(todo);
    saveTodos();
    renderTodos();
    todoInput.value = '';
  }
}

// 编辑待办事项
function editTodo(index) {
  const newText = prompt('Enter new text');
  if (newText !== null) {
    todos[index].text = newText.trim();
    saveTodos();
    renderTodos();
  }
}

// 标记待办事项为已完成或未完成
function toggleComplete(index) {
  todos[index].completed = !todos[index].completed;
  saveTodos();
  renderTodos();
}

// 删除待办事项
function deleteTodo(index) {
  todos.splice(index, 1);
  saveTodos();
  renderTodos();
}

// 保存待办事项到本地存储
function saveTodos() {
  localStorage.setItem('todos', JSON.stringify(todos));
}

// 监听表单提交事件
todoForm.addEventListener('submit', (e) => {
  e.preventDefault();
  addTodo();
});

// 初始化应用
renderTodos();

步骤 4:测试应用

现在,您可以在浏览器中打开HTML文件,并测试待办事项列表应用的功能。您可以尝试添加、编辑、完成和删除待办事项,应用会自动保存您的操作。

结论

通过这个完整的项目实例,我们演示了如何使用JavaScript实现一个简单的待办事项列表应用。您可以根据自己的需求对应用进行扩展和定制,例如添加优先级、日期等功能。