用JavaScript实现一个简单的任务清单应用:从零开始做项目

99 阅读4分钟

最近在学习JavaScript的时候,我决定通过做一个小项目来巩固一下所学的内容。于是,我选择了实现一个简单的任务清单应用——就是一个可以记录任务、标记完成、删除任务的列表。这个项目虽然很简单,但涉及到很多基本的JavaScript功能,做完之后感觉自己对JavaScript有了更深的理解。

1. 需求分析:做一个简单的任务清单

首先,来简单梳理一下这个项目的需求:

  • 添加任务:用户可以输入任务内容,点击按钮将任务添加到任务列表中。
  • 标记任务为完成:点击任务右侧的勾选框,标记任务完成或未完成,任务完成后可以换个样式。
  • 删除任务:每个任务旁边都有一个删除按钮,点击删除按钮,任务就会从列表中消失。

看起来很简单吧?接下来就让我们一步步用JavaScript实现这些功能!

2. 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>任务清单</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <h1>我的任务清单</h1>
        <input type="text" id="task-input" placeholder="添加新任务">
        <button id="add-task-btn">添加任务</button>
        <ul id="task-list"></ul>
    </div>
    <script src="script.js"></script>
</body>
</html>

这个结构非常简单,有一个输入框和按钮,下面是任务列表的容器。接下来,我就开始用JavaScript来实现它的功能。

3. JavaScript代码:实现功能

首先,我们需要获取页面中的元素:输入框、按钮和任务列表。然后,我用事件监听器来处理用户的操作。

javascript
复制代码
// 获取页面元素
const taskInput = document.getElementById("task-input");
const addButton = document.getElementById("add-task-btn");
const taskList = document.getElementById("task-list");

// 添加任务功能
addButton.addEventListener("click", function() {
    const taskText = taskInput.value.trim();
    if (taskText) { // 如果输入框不为空
        const li = document.createElement("li");
        li.textContent = taskText;
        
        // 添加完成按钮
        const completeButton = document.createElement("button");
        completeButton.textContent = "完成";
        completeButton.addEventListener("click", function() {
            li.style.textDecoration = li.style.textDecoration === "line-through" ? "" : "line-through";
        });

        // 添加删除按钮
        const deleteButton = document.createElement("button");
        deleteButton.textContent = "删除";
        deleteButton.addEventListener("click", function() {
            taskList.removeChild(li);
        });

        li.appendChild(completeButton);
        li.appendChild(deleteButton);
        taskList.appendChild(li);

        taskInput.value = ""; // 清空输入框
    }
});

这段JavaScript代码做了以下几件事:

  • 获取了页面上输入框、按钮和任务列表的DOM元素。
  • 添加了点击“添加任务”按钮的事件监听器,用户输入任务后,创建一个新的<li>元素,将任务文本显示出来。
  • 为每个任务添加了两个按钮:一个是标记为完成的“完成”按钮,另一个是删除按钮。点击“完成”按钮后,任务的文本就会加上删除线;点击“删除”按钮后,任务从列表中删除。
  • 最后,任务添加完成后清空输入框。

4. CSS样式:让界面更美观

为了让这个任务清单看起来更好,我加了一点简单的CSS样式:

css
复制代码
body {
    font-family: Arial, sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
    background-color: #f4f4f9;
}

.container {
    background: #fff;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

input, button {
    padding: 10px;
    margin: 5px;
    border-radius: 5px;
}

button {
    cursor: pointer;
    border: none;
    background-color: #4CAF50;
    color: white;
}

button:hover {
    background-color: #45a049;
}

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

li {
    padding: 10px;
    margin: 5px 0;
    background-color: #f1f1f1;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

li button {
    margin-left: 10px;
}

这段CSS简单地美化了页面,给输入框、按钮、列表项加了一些样式,使界面看起来更加整洁。

5. 总结:小项目的收获

通过这个小项目,我学到了如何使用JavaScript动态地操作DOM,如何通过事件监听器响应用户的操作,如何创建和删除HTML元素,如何为元素添加事件等等。这个任务清单应用虽然很简单,但涉及的知识点非常基础且重要,完成后我对JavaScript有了更深的理解。

当然,这个项目还可以进一步优化,比如添加任务存储到本地存储、添加任务优先级、甚至做一个简洁的UI框架。不过,作为一个入门项目,它已经让我掌握了很多核心技能。

希望我的分享能帮助正在学习JavaScript的同学们,也许你们可以尝试做一些类似的项目,来巩固自己的学习成果。加油!