在本教程中,我们将一步步创建一个简单的待办事项列表应用,这不仅会帮助你学习基本的JavaScript编程概念,还会教会你如何处理事件以及操作DOM。这个项目是面向初学者的,旨在提供实际操作的经验。
首先,我们需要创建一个简单的HTML页面,它将作为我们待办事项列表的骨架。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>待办事项列表应用title>
head>
<body>
<div id="app">
<h1>我的待办事项h1>
<form id="todo-form">
<input type="text" id="todo-input" placeholder="添加新的待办事项...">
<button type="submit">添加button>
form>
<ul id="todo-list">
ul>
div>
body>
html>
我们的应用可能会很基础,但添加一些简单的样式可以让它看起来更好。
/* 在此添加基础样式 */
body {
font-family: 'Arial', sans-serif;
background: #f4f4f4;
color: #333;
line-height: 1.6;
}
#app {
width: 300px;
margin: 30px auto;
}
#todo-form input[type="text"] {
width: 70%;
padding: 10px;
}
#todo-form button {
width: 25%;
background: #333;
color: white;
padding: 10px;
border: none;
}
#todo-list {
list-style: none;
padding: 0;
}
#todo-list li {
background: #fff;
margin-bottom: 5px;
padding: 10px;
text-align: left;
}
现在,我们将使用JavaScript为我们的应用添加交互性。
// 获取DOM元素的引用
const todoForm = document.getElementById('todo-form');
const todoInput = document.getElementById('todo-input');
const todoList = document.getElementById('todo-list');
// 处理表单提交事件
todoForm.addEventListener('submit', function(event) {
event.preventDefault(); // 阻止表单默认提交行为
// 获取用户输入的待办事项
const newTodoText = todoInput.value.trim();
// 检查输入不为空
if (newTodoText !== '') {
addTodoItem(newTodoText);
todoInput.value = ''; // 清空输入框
}
});
function addTodoItem(text) {
// 创建新的li元素
const li = document.createElement('li');
li.textContent = text;
// 添加删除按钮
const deleteBtn = document.createElement('button');
deleteBtn.textContent = '删除';
deleteBtn.onclick = function() {
li.remove();
};
li.appendChild(deleteBtn);
// 将新的待办事项添加到列表中
todoList.appendChild(li);
}
为了保证用户在关闭浏览器后再次访问应用时能够看到之前的待办事项,我们可以使用浏览器的LocalStorage功能。
function addTodoItem(text) {
// ...之前的代码
// 存储待办事项到LocalStorage
saveTodos();
}
function saveTodos() {
const todos = [];
document.querySelectorAll('#todo-list li').forEach(function(item) {
todos.push(item.textContent.replace('删除', '').trim());
});
localStorage.setItem('todos', JSON.stringify(todos));
}
function loadTodos() {
const todos = JSON.parse(localStorage.getItem('todos')) || [];
todos.forEach(addTodoItem);
}
// 页面加载时调用loadTodos
document.addEventListener('DOMContentLoaded', loadTodos);
以上是文章的大纲和部分内容,整篇文章可以根据这个基础继续扩展,深入解释每个概念,添加代码注释,增加更多的功能,如编辑待办事项、排序或筛选功能。您可以通过增加更多的例子,提示,最佳实践和相关资源,来帮助读者更好地理解并实践。不要忘了在文章的末尾添加总结部分,回顾已经学到的知识,并鼓励读者继续学习和探索JavaScript的更多功能。