使用JavaScript实现一个待办事项列表应用
介绍
在这个项目示例中,我们将使用JavaScript实现一个简单的待办事项列表应用。该应用允许用户添加、编辑、完成和删除待办事项。我们将使用HTML、CSS和JavaScript来构建这个应用,并使用本地存储来保存用户的待办事项。
功能
我们的待办事项列表应用将具有以下功能:
- 添加待办事项:用户可以通过输入框添加新的待办事项。
- 显示待办事项列表:应用将显示用户添加的待办事项列表。
- 编辑待办事项:用户可以编辑已存在的待办事项。
- 完成待办事项:用户可以将待办事项标记为已完成。
- 删除待办事项:用户可以删除已完成的待办事项。
技术栈
我们将使用以下技术来实现这个项目:
- 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实现一个简单的待办事项列表应用。您可以根据自己的需求对应用进行扩展和定制,例如添加优先级、日期等功能。