JavaScript待办事项列表

简介: JavaScript待办事项列表

创建一个功能丰富的待办事项列表应用。这个应用将使用JavaScript来管理用户输入的待办事项,并允许用户添加、删除和标记这些事项为已完成。此外,应用还将使用Web Storage API来在本地保存用户数据,这样即使页面刷新或关闭,用户的待办事项也不会丢失。

HTML结构

首先,我们需要创建一个HTML文件来容纳我们的待办事项列表应用。

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>待办事项列表</title>  
    <link rel="stylesheet" href="styles.css">  
</head>  
<body>  
    <div id="app">  
        <h1>待办事项列表</h1>  
          
        <input type="text" id="newTaskInput" placeholder="添加新任务...">  
        <button id="addTaskButton">添加</button>  
          
        <ul id="taskList">  
            <!-- 任务列表将在这里动态生成 -->  
        </ul>  
          
        <button id="clearCompletedButton">清除已完成</button>  
    </div>  
      
    <script src="app.js"></script>  
</body>  
</html>

CSS样式

接下来,我们创建一个CSS文件来美化我们的待办事项列表应用。

/* styles.css */  
  
#app {  
    max-width: 400px;  
    margin: 0 auto;  
    padding: 20px;  
}  
  
input[type="text"] {  
    width: 100%;  
    padding: 10px;  
    margin-bottom: 10px;  
}  
  
button {  
    padding: 10px 20px;  
}  
  
ul {  
    list-style: none;  
    padding: 0;  
}  
  
li {  
    margin-bottom: 10px;  
    padding: 10px;  
    background-color: #f4f4f4;  
    position: relative;  
}  
  
li.completed {  
    background-color: #e0e0e0;  
}  
  
li button {  
    position: absolute;  
    right: 10px;  
    top: 10px;  
}

 

JavaScript功能实现

// app.js  
  
// 获取DOM元素  
const newTaskInput = document.getElementById('newTaskInput');  
const addTaskButton = document.getElementById('addTaskButton');  
const taskList = document.getElementById('taskList');  
const clearCompletedButton = document.getElementById('clearCompletedButton');  
  
// 从本地存储中加载任务  
const tasks = JSON.parse(localStorage.getItem('tasks')) || [];  
  
// 渲染任务列表  
function renderTaskList() {  
    taskList.innerHTML = ''; // 清空任务列表  
    tasks.forEach(task => {  
        const li = document.createElement('li');  
        li.textContent = task.text;  
        li.classList.toggle('completed', task.completed);  
  
        const deleteButton = document.createElement('button');  
        deleteButton.textContent = '删除';  
        deleteButton.addEventListener('click', () => removeTask(task));  
  
        li.appendChild(deleteButton);  
        taskList.appendChild(li);  
    });  
}  
  
// 添加新任务  
function addNewTask() {  
    const taskText = newTaskInput.value.trim();  
    if (taskText) {  
        const newTask = { text: taskText, completed: false };  
        tasks.push(newTask);  
        localStorage.setItem('tasks', JSON.stringify(tasks)); // 保存到本地存储  
        newTaskInput.value = ''; // 清空输入框  
        renderTaskList(); // 渲染任务列表  
    }  
}  
  
// 删除任务  
function removeTask(task) {  
    const index = tasks.indexOf(task);  
    if (index !== -1) {  
        tasks.splice(index, 1);  
        localStorage.setItem('tasks', JSON.stringify(tasks)); // 保存到本地存储  
        renderTaskList(); // 渲染任务列表  
    }  
}  
  
// 清除已完成的任务  
function clearCompleted() {

 

相关文章
|
存储 JavaScript 前端开发
如何使用Vue.js实现一个简单的待办事项应用
【10月更文挑战第1天】如何使用Vue.js实现一个简单的待办事项应用
432 5
|
JavaScript
js学习--商品列表商品详情
js学习--商品列表商品详情
252 2
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
187 5
|
JavaScript 索引
Vue.js的`v-for`用于基于数组或对象渲染列表,如遍历数组生成`&lt;li&gt;`元素
【6月更文挑战第25天】Vue.js的`v-for`用于基于数组或对象渲染列表,如遍历数组生成`&lt;li&gt;`元素。基本语法是`v-for=&quot;(item, index) in items&quot;`,支持遍历对象的键值对。注意与`v-if`同用时应使用`&lt;template&gt;`,组件上使用`v-for`需设`key`属性以优化性能。
354 2
|
JavaScript 前端开发
【专栏】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表
【4月更文挑战第29天】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表。它接受两个参数:上下文对象和参数数组。理解`apply`有助于深入JS运行机制。文章分三部分探讨其原理:基本概念和用法、工作原理详解、实际应用与注意事项。在应用中要注意性能、参数类型和兼容性问题。`apply`可用于动态改变上下文、传递参数数组,甚至模拟其他语言的调用方式。通过深入理解`apply`,能提升代码质量和效率。
255 3
|
存储 前端开发 JavaScript
深入浅出:使用JavaScript实现一个功能丰富的待办事项应用
深入浅出:使用JavaScript实现一个功能丰富的待办事项应用
|
移动开发 前端开发 JavaScript
使用JavaScript实现一个复杂功能:自定义拖拽排序列表
使用JavaScript实现一个复杂功能:自定义拖拽排序列表
|
JavaScript
sort列表排序(js的问题)
sort列表排序(js的问题)
261 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
466 2

热门文章

最新文章