此程序将允许用户添加新任务,标记任务为完成,以及删除任务。
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 = '';
}
});
代码解释
- 获取HTML元素引用
我们使用document.getElementById()
方法来获取HTML页面中元素的引用,这样我们就可以在JavaScript中操作这些元素了。 - 添加新任务
我们给"Add Task"按钮添加了一个点击事件监听器。当按钮被点击时,它会执行一个匿名函数。这个函数首先获取输入框中的文本,然后检查是否有文本输入。如果有,它就创建一个新的<li>
元素,并将其添加到任务列表中。同时,它还创建了一个"Delete"按钮,用于删除任务。 - 完成任务和删除任务
我们还给每个任务列表项添加了一个点击事件监听器。当列表项被点击时,它会切换completed
类,从而改变文本的样式(通过CSS中的text-decoration: line-through;
)。"Delete"按钮也有一个点击事件监听器,当它被点击时,它会从其父元素(即任务列表)中移除相应的任务列表项。
总结
这个待办事项列表应用程序展示了如何使用JavaScript来操作DOM、处理用户输入和事件,以及实现基本的应用程序逻辑。虽然这个例子相对简单,但它涵盖了很多在构建更复杂的Web应用程序时会用到的基本概念和技术。通过学习和实践这些技术,你可以逐渐掌握如何使用JavaScript来创建功能丰富、交互性强的Web应用程序。