JS实现简单的todoList(记事本)效果

下面我会给你讲解JS实现简单的todoList(记事本)效果的完整攻略。

1. 界面部分

首先,我们需要搭建好页面框架。可以使用HTML和CSS实现一个简单的布局,其中包括待办事项输入框、已完成事项展示区域、未完成事项展示区域等。

<body>
  <div id="app">
    <h1>Todo List</h1>
    <input id="new-todo" type="text" placeholder="请输入待办事项...">
    <div>
      <h2>未完成事项</h2>
      <ul id="incomplete-tasks">
      </ul>
    </div>
    <div>
      <h2>已完成事项</h2>
      <ul id="completed-tasks">
      </ul>
    </div>
  </div>
</body>

2. JS部分

接下来,我们需要使用JavaScript来实现功能。

添加新事项

const addButton = document.getElementById('add-button');
const taskInput = document.getElementById('new-todo');
const incompleteTasksList = document.getElementById('incomplete-tasks');

addButton.addEventListener('click', () => {
  if (taskInput.value) {
    incompleteTasksList.appendChild(createNewTaskElement(taskInput.value));
    taskInput.value = '';
  }
});

function createNewTaskElement(taskName) {
  const listItem = document.createElement('li');
  const checkBox = document.createElement('input');
  const label = document.createElement('label');
  const deleteButton = document.createElement('button');

  checkBox.type = 'checkbox';
  label.innerText = taskName;
  deleteButton.innerText = '删除';

  listItem.appendChild(checkBox);
  listItem.appendChild(label);
  listItem.appendChild(deleteButton);

  return listItem;
}

标记任务为已完成

const incompleteTasksList = document.getElementById('incomplete-tasks');
const completedTasksList = document.getElementById('completed-tasks');

incompleteTasksList.addEventListener('change', (event) => {
  const taskItem = event.target.parentElement;
  const checkBox = event.target;

  if (checkBox.checked) {
    completedTasksList.appendChild(taskItem);
  } else {
    incompleteTasksList.appendChild(taskItem);
  }
});

删除任务

const incompleteTasksList = document.getElementById('incomplete-tasks');
const completedTasksList = document.getElementById('completed-tasks');

incompleteTasksList.addEventListener('click', (event) => {
  if (event.target.tagName === 'BUTTON') {
    const taskItem = event.target.parentElement;
    taskItem.remove();
  }
});

completedTasksList.addEventListener('click', (event) => {
  if (event.target.tagName === 'BUTTON') {
    const taskItem = event.target.parentElement;
    taskItem.remove();
  }
});

3. 示例说明

示例一:添加新事项

用户在待办事项输入框中输入一条待办事项,点击添加按钮。输入框清空,并将待办事项添加到未完成事项展示区域中。

示例二:标记任务为已完成

用户点击某一未完成事项前面的复选框,该任务从未完成事项列表中移动到已完成事项列表中。

以上就是JS实现简单的todoList(记事本)效果的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现简单的todoList(记事本)效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • css中position属性使用详解

    CSS 中 position 属性使用详解 介绍 在 CSS 中,position 属性可以控制 HTML 元素的定位方式,可用于实现元素的绝对定位、相对定位、固定定位等效果。本文将详细介绍 position 属性的五个取值及其用法。 属性值 static static 是 position 的默认值,表示元素采用正常的文档流布局,不会应用 top、bott…

    css 2023年6月9日
    00
  • Dreamweaver网页怎么制作CSS叠层样式?

    Dreamweaver是一款常用的网页制作工具,可以使用它来制作CSS叠层样式。以下是制作CSS叠层样式的完整攻略: 基本步骤 创建HTML文件:在Dreamweaver中创建一个新的HTML文件,例如: <!DOCTYPE html> <html> <head> <title>网页标题</title&g…

    css 2023年5月18日
    00
  • 防止网站被采集的理论分析以及十条方法对策

    以下是“防止网站被采集的理论分析以及十条方法对策”的完整攻略。 1、理论分析 1.1 采集方式 网站被采集的方式非常多,常见的有以下几种: 爬虫程序通过 URLs 或者搜索关键字进行遍历,抓取网站上的资源。 通过采集插件,自动化脚本等方式,将网站上的信息通过 API 进行采集。 通过监控网站 API 接口,抓取网站上的数据和内容。 1.2 采集特征 根据网站…

    css 2023年6月10日
    00
  • HTML文本格式化

    HTML文本格式化是将HTML代码中的文本内容按照特定的格式进行展示,包括字体、颜色、对齐方式等。 HTML 中有许多用来格式化文本的标签,如下表所示: 标签 描述 <b>…</b> 加粗标签中的字体 <em>…</em> 强调标签中的内容,并使标签中的字体倾斜 <i>…</i&g…

    Web开发基础 2023年3月15日
    00
  • ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

    下面是“ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项”的攻略: 1. 准备工作 首先,需要确保已经安装好了以下环境: .NET Framework 4.0及以上版本 Visual Studio 2012及以上版本 ASP.NET MVC 4.0及以上版本 Entity Framework 6.0及以…

    css 2023年6月10日
    00
  • vue3.0中使用postcss-pxtorem的具体方法

    在vue3.0中使用postcss-pxtorem,需要遵守以下步骤: 步骤一:安装依赖 首先需要在项目中安装 postcss-pxtorem 和 postcss-loader 两个依赖。 npm install postcss-pxtorem postcss-loader –save-dev 步骤二:配置构建工具webpack 在webpack.conf…

    css 2023年6月10日
    00
  • layUI布局使用教程

    layUI布局使用教程 什么是layUI布局? layUI布局是一种基于Web前端的UI框架,它提供了一系列基础样式、布局模块、层模块、组件等,能够帮助开发者快速搭建前端UI界面,提高编码效率,使得前端开发更加简单方便。 基础布局 栅格系统 栅格系统是layUI布局的重要组成部分,可以将页面划分为多个均等的行和列,以方便布局。 以下是一个使用栅格系统布局的示…

    css 2023年6月10日
    00
  • H5手机端多文件上传预览插件

    H5手机端多文件上传预览插件可以方便地用于网站或应用的图片上传功能。下面是使用该插件的完整攻略: 1. 下载和引入插件文件 该插件可以在Github上下载。下载完成后,将jquery.uploader.js和jquery.uploader.css文件复制到项目中,并在HTML文件中引入这两个文件。 2. 编写HTML代码 在HTML代码中,需要添加一个文件上…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部