构建一个待办事项列表(To-Do List)应用程序

此程序将允许用户添加新任务,标记任务为完成,以及删除任务。

HTML结构

首先,我们需要一个HTML页面来展示我们的待办事项列表。在<body>标签内,我们可以放置一个输入框用于添加新任务,一个按钮用于提交新任务,以及一个用于显示任务的列表。

html 复制代码
<!DOCTYPE html>  
<html>  
<head>  
    <title>To-Do List App</title>  
    <style>  
        .completed {  
            text-decoration: line-through;  
        }  
    </style>  
</head>  
<body>  
    <h1>To-Do List</h1>  
    <input type="text" id="newTask" placeholder="Add a new task">  
    <button id="addTask">Add Task</button>  
    <ul id="taskList">  
        <!-- Task items will go here -->  
    </ul>  
    <script src="app.js"></script>  
</body>  
</html>

JavaScript实现

然后,我们在一个名为app.js的外部JavaScript文件中编写我们的程序逻辑。

javascript 复制代码
// 获取HTML元素引用  
const newTaskInput = document.getElementById('newTask');  
const addTaskButton = document.getElementById('addTask');  
const taskList = document.getElementById('taskList');  
  
// 添加新任务的功能  
addTaskButton.addEventListener('click', function() {  
    // 获取输入框中的文本  
    const taskText = newTaskInput.value.trim();  
  
    // 检查是否有文本输入  
    if (taskText) {  
        // 创建新的列表项  
        const listItem = document.createElement('li');  
        listItem.textContent = taskText;  
  
        // 添加完成任务的功能  
        listItem.addEventListener('click', function() {  
            listItem.classList.toggle('completed');  
        });  
  
        // 添加删除任务的功能  
        const deleteButton = document.createElement('button');  
        deleteButton.textContent = 'Delete';  
        deleteButton.addEventListener('click', function() {  
            taskList.removeChild(listItem);  
        });  
  
        listItem.appendChild(deleteButton);  
        taskList.appendChild(listItem);  
  
        // 清空输入框  
        newTaskInput.value = '';  
    }  
});

代码解释

  1. 获取HTML元素引用
    我们使用document.getElementById()方法来获取HTML页面中元素的引用,这样我们就可以在JavaScript中操作这些元素了。
  2. 添加新任务
    我们给"Add Task"按钮添加了一个点击事件监听器。当按钮被点击时,它会执行一个匿名函数。这个函数首先获取输入框中的文本,然后检查是否有文本输入。如果有,它就创建一个新的<li>元素,并将其添加到任务列表中。同时,它还创建了一个"Delete"按钮,用于删除任务。
  3. 完成任务和删除任务
    我们还给每个任务列表项添加了一个点击事件监听器。当列表项被点击时,它会切换completed类,从而改变文本的样式(通过CSS中的text-decoration: line-through;)。"Delete"按钮也有一个点击事件监听器,当它被点击时,它会从其父元素(即任务列表)中移除相应的任务列表项。

总结

这个待办事项列表应用程序展示了如何使用JavaScript来操作DOM、处理用户输入和事件,以及实现基本的应用程序逻辑。虽然这个例子相对简单,但它涵盖了很多在构建更复杂的Web应用程序时会用到的基本概念和技术。通过学习和实践这些技术,你可以逐渐掌握如何使用JavaScript来创建功能丰富、交互性强的Web应用程序。

相关推荐
BK贝壳3 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
Sakura_j_h_4 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
?abc!6 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
隔窗听雨眠7 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
Helix2509 小时前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
爱读书的小胖10 小时前
LeetCode 55 跳跃游戏 C 语言解题分析
c语言·数据结构·算法·leetcode·1024程序员节
舰长11511 小时前
将百万数据插入到 Redis,有哪些实现方案?
数据结构·redis·开源
Java开发追求者11 小时前
windows快速安装docker
windows·docker·安装·1024程序员节
若亦_12 小时前
数据结构>>优先级队列(堆)
java·数据结构
bksczm13 小时前
Redis数据结构之hash
数据结构·redis·哈希算法·1024程序员节