当前位置: 首页 > article >正文

JavaScript网页设计案例(任务管理器)

 

任务管理器

 

  • 功能描述:用户可以添加任务、删除任务,并且任务列表在页面刷新后不会丢失,还能进行任务过滤与搜索。
  • 代码实现思路
    • HTML 结构:创建输入框用于输入任务、按钮用于添加任务,以及无序列表用于展示任务列表。
    • CSS 样式:对页面和各个元素进行样式设置,如背景颜色、边框、字体等,让页面看起来更美观。
    • JavaScript 逻辑:利用addEventListener监听事件,获取用户输入并添加到任务列表,通过localStorage实现任务的持久化存储。

代码实现(HTML+CSS+JS) 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>任务管理器</title>
    <style>
        /* CSS 样式 */
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            margin: 0;
            padding: 0;
        }

        .container {
            max-width: 600px;
            margin: 50px auto;
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }

        h1 {
            text-align: center;
        }

        input[type="text"] {
            width: 70%;
            padding: 10px;
            margin-right: 10px;
            border: 1px solid #ccc;
            border-radius: 3px;
        }

        button {
            padding: 10px 20px;
            background-color: #007BFF;
            color: #fff;
            border: none;
            border-radius: 3px;
            cursor: pointer;
        }

        button:hover {
            background-color: #0056b3;
        }

        ul {
            list-style-type: none;
            padding: 0;
        }

        li {
            padding: 10px;
            border-bottom: 1px solid #ccc;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        li.completed {
            text-decoration: line-through;
            color: #999;
        }

        li button {
            background-color: #dc3545;
            color: #fff;
            border: none;
            padding: 5px 10px;
            border-radius: 3px;
            cursor: pointer;
        }

        li button:hover {
            background-color: #c82333;
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>任务管理器</h1>
        <input type="text" id="taskInput" placeholder="输入任务">
        <button id="addTaskButton">添加任务</button>
        <input type="text" id="searchInput" placeholder="搜索任务">
        <ul id="taskList"></ul>
    </div>
    <script>
        // 获取 DOM 元素
        const taskInput = document.getElementById('taskInput');
        const addTaskButton = document.getElementById('addTaskButton');
        const taskList = document.getElementById('taskList');
        const searchInput = document.getElementById('searchInput');

        // 从 localStorage 中获取任务列表
        let tasks = JSON.parse(localStorage.getItem('tasks')) || [];

        // 渲染任务列表
        function renderTasks() {
            taskList.innerHTML = '';
            const searchTerm = searchInput.value.toLowerCase();
            tasks.forEach((task, index) => {
                if (task.text.toLowerCase().includes(searchTerm)) {
                    const li = document.createElement('li');
                    li.innerHTML = `
                        <input type="checkbox" ${task.completed? 'checked' : ''} onchange="toggleTask(${index})">
                        <span>${task.text}</span>
                        <button onclick="deleteTask(${index})">删除</button>
                    `;
                    if (task.completed) {
                        li.classList.add('completed');
                    }
                    taskList.appendChild(li);
                }
            });
        }

        // 添加任务
        function addTask() {
            const taskText = taskInput.value.trim();
            if (taskText) {
                tasks.push({ text: taskText, completed: false });
                localStorage.setItem('tasks', JSON.stringify(tasks));
                taskInput.value = '';
                renderTasks();
            }
        }

        // 删除任务
        function deleteTask(index) {
            tasks.splice(index, 1);
            localStorage.setItem('tasks', JSON.stringify(tasks));
            renderTasks();
        }

        // 标记任务完成
        function toggleTask(index) {
            tasks[index].completed =!tasks[index].completed;
            localStorage.setItem('tasks', JSON.stringify(tasks));
            renderTasks();
        }

        // 搜索任务
        function searchTasks() {
            renderTasks();
        }

        // 事件监听
        addTaskButton.addEventListener('click', addTask);
        searchInput.addEventListener('input', searchTasks);

        // 初始渲染
        renderTasks();
    </script>
</body>

</html>

将上述代码保存为一个 .html 文件(例如 task_manager.html),然后在浏览器中打开该文件,即可看到任务管理器的效果。

代码说明

  • HTML 部分:创建了输入框、添加按钮、搜索框和无序列表,用于输入任务、添加任务、搜索任务和展示任务列表。
  • CSS 部分:对页面进行了基本的样式设置,包括背景颜色、边框、字体等,使页面看起来更美观。
  • JavaScript 部分
    • 使用localStorage来存储任务列表,确保页面刷新后任务列表不会丢失。
    • addTask函数用于添加新任务,并更新localStorage
    • deleteTask函数用于删除指定索引的任务,并更新localStorage
    • toggleTask函数用于标记任务完成状态,并更新localStorage
    • searchTasks函数用于根据搜索框输入过滤任务列表。
    • renderTasks函数用于渲染任务列表,根据任务的完成状态添加样式。

运行效果 


http://www.kler.cn/a/525371.html

相关文章:

  • 安装zsh并美化
  • 【每日一A】2015NOIP真题 (二分+贪心) python
  • 大一计算机的自学总结:异或运算
  • 【深度学习】 UNet详解
  • wordpress代码结构解析
  • 算法基础学习——二分查找(附带Java模板)
  • 芯片AI深度实战:基础篇之langchain
  • 不背单词快捷键(不背单词键盘快捷键)
  • 自制插件扩宽“文章区间“样式插件
  • JAVA学习-练习试用Java实现“使用Swing创建一个简单的窗口”
  • 【PySide6快速入门】qrc资源文件的使用
  • golang学习教程
  • Python NumPy(7):连接数组、分割数组、数组元素的添加与删除
  • pytorch使用SVM实现文本分类
  • 17、Spring MVC 框架:构建强大的 Java Web 应用程序
  • APL语言的正则表达式
  • Java创建项目准备工作
  • [答疑]DDD伪创新哪有资格和仿制药比
  • 系统思考—心智模式
  • [机缘参悟-230]:新春感悟:人类社会的本质是通过交换,实现合作、竞争、斗争。通过竞争,壮大自己;通过合作,实现共赢;通过斗争,消灭敌人。
  • 新年快乐!给大家带来了一份 python 烟花代码!
  • Vue - pinia
  • Qt调用ffmpeg库录屏并进行UDP组播推流
  • 实验四---基于MATLAB的根轨迹绘制与性能分析---自动控制原理实验课
  • DeepSeek R1中提到“知识蒸馏”到底是什么
  • 「 机器人 」扑翼飞行器控制策略浅谈