使用 JavaScript 制作 To-Do List

简介: 本文详细介绍了如何使用HTML、CSS和JavaScript制作一个简单的To-Do List网页,包括添加、删除任务及标记任务完成等功能的实现,附带完整代码示例和页面样式设计。

使用 JavaScript 制作 To-Do List

本文记录了使用 HTML、CSS 和 JavaScript 制作一个简单的 To-Do List 网页的全过程,包含功能描述、代码实现以及优化方向。

**🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!🙏🙏🙏

@[toc]


功能描述

  1. 添加任务:用户可以输入任务内容,并将其添加到任务列表中。
  2. 删除任务:用户可以删除已完成的任务。
  3. 标记任务完成:点击任务可以标记为完成或未完成状态。

页面效果

页面包含以下元素:

  • 一个输入框,用于输入任务内容。
  • 一个按钮,用于将任务添加到列表中。
  • 一个任务列表,用于展示所有任务。

代码实现

HTML 部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>To-Do List</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="todo-container">
        <h1>To-Do List</h1>
        <div class="input-section">
            <input type="text" id="task-input" placeholder="请输入任务...">
            <button id="add-task-btn">添加任务</button>
        </div>
        <ul id="task-list"></ul>
    </div>
    <script src="script.js"></script>
</body>
</html>

css部分

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

.todo-container {
   
    background: #fff;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    width: 300px;
    text-align: center;
}

h1 {
   
    color: #333;
    margin-bottom: 20px;
}

.input-section {
   
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
}

#task-input {
   
    flex: 1;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
}

#add-task-btn {
   
    padding: 8px 12px;
    background: #5cb85c;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

#add-task-btn:hover {
   
    background: #4cae4c;
}

#task-list {
   
    list-style-type: none;
    padding: 0;
}

.task-item {
   
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px;
    margin-bottom: 10px;
    background: #f9f9f9;
    border-radius: 4px;
    border: 1px solid #ddd;
}

.task-item.completed {
   
    text-decoration: line-through;
    color: #aaa;
}

.task-item button {
   
    background: #d9534f;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    padding: 5px 8px;
}

.task-item button:hover {
   
    background: #c9302c;
}

js部分

// 获取 DOM 元素
const taskInput = document.getElementById('task-input');
const addTaskBtn = document.getElementById('add-task-btn');
const taskList = document.getElementById('task-list');

// 添加任务
addTaskBtn.addEventListener('click', () => {
   
    const taskText = taskInput.value.trim();
    if (taskText === '') {
   
        alert('任务内容不能为空!');
        return;
    }

    // 创建任务项
    const taskItem = document.createElement('li');
    taskItem.classList.add('task-item');

    // 任务文本
    const taskContent = document.createElement('span');
    taskContent.textContent = taskText;
    taskItem.appendChild(taskContent);

    // 完成按钮
    taskItem.addEventListener('click', () => {
   
        taskItem.classList.toggle('completed');
    });

    // 删除按钮
    const deleteBtn = document.createElement('button');
    deleteBtn.textContent = '删除';
    deleteBtn.addEventListener('click', () => {
   
        taskList.removeChild(taskItem);
    });
    taskItem.appendChild(deleteBtn);

    // 将任务项添加到列表
    taskList.appendChild(taskItem);

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

最终效果

在这里插入图片描述

Hi👋,这里是瑞雨溪一个喜欢JavaScript和Vue的大学生,如果我的文章给你带来的帮助,欢迎您关注我,我会持续不断的更新更多优质文章.你的关注就是我的动力!!!🎉🎉🎉

相关文章
|
6月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
|
JavaScript 前端开发
Javascript知识【jQuery:操作内容】
Javascript知识【jQuery:操作内容】
|
3月前
|
前端开发 JavaScript
如何使用JavaScript制作轮播图
如何使用JavaScript制作轮播图
33 0
|
6月前
|
存储 JavaScript 前端开发
JavaScript高级主题:JavaScript 中的 Map 和 Set 是什么?它们有什么区别?
JavaScript的ES6引入了Map和Set数据结构。Map用于存储键值对,适合通过键进行查找,而Set则存储唯一值,无键且不支持键查找。两者在性能上表现出色,尤其在频繁的写入删除操作中。选择使用哪个取决于具体应用场景:键值对需求选Map,独特值集合则选Set。
50 2
|
6月前
|
JavaScript 前端开发 Java
编程笔记 html5&css&js 073 JavaScript Object数据类型
编程笔记 html5&css&js 073 JavaScript Object数据类型
|
6月前
|
JavaScript 前端开发 索引
编程笔记 html5&css&js 067 JavaScript String数据类型
编程笔记 html5&css&js 067 JavaScript String数据类型
|
6月前
|
JavaScript 前端开发
编程笔记 html5&css&js 068 JavaScript Boolean数据类型
编程笔记 html5&css&js 068 JavaScript Boolean数据类型
|
6月前
|
存储 JavaScript 前端开发
编程笔记 html5&css&js 066 JavaScript Number数据类型
编程笔记 html5&css&js 066 JavaScript Number数据类型
|
6月前
|
JavaScript 前端开发 API
编程笔记 html5&css&js 070 JavaScript Null数据类型
编程笔记 html5&css&js 070 JavaScript Null数据类型
243 0
|
6月前
|
JavaScript 前端开发
编程笔记 html5&css&js 069 JavaScript Undefined数据类型
编程笔记 html5&css&js 069 JavaScript Undefined数据类型
下一篇
无影云桌面