原生JavaScript实现todolist功能

yizhihongxing

当我们提到todolist功能时,我们通常指的是一个可以添加、删除、编辑、标记已完成等功能的任务列表。

实现这样一个功能,可以使用原生JavaScript来完成。下面是一些步骤和示例代码:

步骤一:创建HTML结构

首先,需要创建一个HTML结构来展示任务列表。需要一个输入框来允许用户输入新任务,还需要一个可滚动的任务列表来展示已有的任务。每个任务项需要包含一个复选框来标记任务是否已完成,还需要包含一个编辑按钮来允许用户编辑任务。

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Todo List</title>
</head>
<body>
  <h1>Todo List</h1>
  <input type="text" placeholder="Add New Task">
  <ul>
    <li>
      <input type="checkbox">
      <span>Buy Milk</span>
      <button>Edit</button>
      <button>Delete</button>
    </li>
    <li>
      <input type="checkbox">
      <span>Wash Car</span>
      <button>Edit</button>
      <button>Delete</button>
    </li>
    <li>
      <input type="checkbox">
      <span>Walk Dog</span>
      <button>Edit</button>
      <button>Delete</button>
    </li>
  </ul>
</body>
</html>

步骤二:添加CSS样式

接下来,需要使用CSS为任务列表添加样式,使其外观更美观。

示例代码:

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  font-family: Arial, sans-serif;
}

li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

input[type="checkbox"] {
  margin-right: 10px;
}

button {
  background-color: transparent;
  border: none;
  color: #666;
  cursor: pointer;
}

button:hover {
  color: #000;
}

.completed {
  text-decoration: line-through;
  opacity: 0.5;
}

.editMode span {
  display: none;
}

.editMode input[type="text"] {
  display: inline-block;
  padding: 5px;
  margin-right: 10px;
  width: 200px;
  border: 1px solid #ccc;
  border-radius: 5px;
}

步骤三:使用JavaScript管理任务列表

接下来,需要使用JavaScript来添加、删除、编辑和标记任务为已完成。

示例代码:

// 获取DOM元素
var input = document.querySelector("input[type='text']");
var ul = document.querySelector("ul");

// 添加任务
function addTask() {
  if (input.value != "") {
    var li = document.createElement("li");
    li.innerHTML = `
      <input type="checkbox">
      <span>${input.value}</span>
      <button>Edit</button>
      <button>Delete</button>
    `;
    ul.appendChild(li);
    input.value = "";
    addEventListenerToButtons();
  }
}

// 删除任务
function deleteTask(el) {
  el.parentElement.remove();
}

// 编辑任务文本
function editTask(el) {
  var span = el.parentElement.querySelector("span");
  var input = el.parentElement.querySelector("input[type='text']");
  if (el.textContent == "Edit") {
    el.textContent = "Save";
    el.parentElement.classList.add("editMode");
    input.value = span.textContent;
    input.focus();
    input.selectionStart = 0;
    input.selectionEnd = input.value.length;
  } else {
    el.textContent = "Edit";
    el.parentElement.classList.remove("editMode");
    span.textContent = input.value;
  }
}

// 标记已完成
function toggleCompleted(el) {
  var span = el.parentElement.querySelector("span");
  if (el.checked) {
    span.classList.add("completed");
  } else {
    span.classList.remove("completed");
  }
}

// 给所有按钮添加事件监听器
function addEventListenerToButtons() {
  var buttons = document.querySelectorAll("li button");
  for (var i = 0; i < buttons.length; i++) {
    buttons[i].addEventListener("click", function(e) {
      if (e.target.textContent == "Delete") {
        deleteTask(e.target);
      } else {
        editTask(e.target);
      }
    });
  }
  var checkboxes = document.querySelectorAll("li input[type='checkbox']");
  for (var i = 0; i < checkboxes.length; i++) {
    checkboxes[i].addEventListener("click", function(e) { toggleCompleted(e.target); });
  }
}

// 给添加按钮添加事件监听器
var addButton = document.querySelector("input[type='button']");
addButton.addEventListener("click", addTask);
addEventListenerToButtons();

以上代码实现了添加、删除、编辑和标记任务为已完成的功能。在此基础上,您可以继续添加其他功能来完善您的todolist应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JavaScript实现todolist功能 - Python技术站

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

相关文章

  • javascript正则表达配置扩展名并实现验证

    以下是“javascript正则表达配置扩展名并实现验证”的完整攻略: 步骤一:学习正则表达式基础知识 正则表达式是一种用来描述字符串模式的规则。学习正则表达式的基础知识是进行验证扩展名的前提条件。以下是一些基本的正则表达式符号: .:匹配除了换行符以外的任意字符; +:匹配前一个字符的一次或多次出现; *:匹配前一个字符的零次或多次出现; ?:匹配前一个字…

    JavaScript 2023年6月10日
    00
  • 使用javascript解析二维码的三种方式

    使用 JavaScript 解析二维码的三种方式 二维码已经成为我们生活中不可缺少的一部分,我们可以通过扫描二维码获取网址、商品信息等内容。而 JavaScript 是一种非常方便的语言,可以帮助我们解析二维码。下面介绍三种使用 JavaScript 解析二维码的方式。 1. 使用ZXing Library解析二维码 ZXing 是 Google 开源的一个…

    JavaScript 2023年5月19日
    00
  • JS基于HTML5的canvas标签实现炫目的色相球动画效果实例

    让我来为你讲解“JS基于HTML5的canvas标签实现炫目的色相球动画效果实例”的完整攻略。 1.什么是HTML5的canvas标签? HTML5的canvas标签是一种新的HTML标签,它提供了一种使用JavaScript和HTML5绘制图像的方法,并且支持多种绘制和渲染效果。Canvas标签用于在Web页面上绘制图形,如:线条、矩形、圆形、文本等。 2…

    JavaScript 2023年6月10日
    00
  • JS数字千分位格式化实现方法总结

    接下来我将为大家详细讲解“JS数字千分位格式化实现方法总结”的完整攻略。 JS数字千分位格式化实现方法总结 在开发过程中,经常会遇到需要对数字进行千分位格式化的要求。下面是两种实现方法的总结。 方法一:正则表达式实现 正则表达式是一种能够匹配字符串的强有力的工具,我们可以通过正则表达式实现数字千分位格式化。下面是示例代码: /** * 将数字格式化为千分位格…

    JavaScript 2023年5月28日
    00
  • BOM之navigator对象和用户代理检测

    BOM指的是浏览器对象模型(Browser Object Model),是由浏览器厂商提供的一组API接口,用于JavaScript与浏览器交互,包括DOM、window对象、navigator对象等。其中,navigator对象用于获取有关浏览器的信息,用户代理检测可以通过这个对象获取当前浏览器的信息。 navigator对象 navigator对象提供了…

    JavaScript 2023年6月10日
    00
  • JavaScript实现烟花特效(面向对象)

    当下,烟花特效是web前端常见的动画效果之一,本攻略将详细介绍如何通过JavaScript编写实现烟花特效。 步骤一:创建HTML文件 在开发本特效之前,首先需要建立一个HTML文件用于展示页面内容。以下是一个基本的HTML模板,用户可以根据需要添加和修改其他元素: <!DOCTYPE html> <html> <head&gt…

    JavaScript 2023年6月10日
    00
  • 轻量级JS Cookie插件js-cookie的使用方法

    下面我将为大家详细讲解 “轻量级JS Cookie插件js-cookie的使用方法” ,请仔细阅读以下内容。 什么是js-cookie? js-cookie是一个轻量级的JavaScript库,用于处理浏览器中的cookie。它是一个简单易用的插件,可以方便地设置、获取、删除cookie。 js-cookie的安装与引用 安装js-cookie库: npm …

    JavaScript 2023年5月27日
    00
  • 基于BootstrapValidator的Form表单验证(24)

    下面是一份详细的“基于BootstrapValidator的Form表单验证(24)”的完整攻略。 简介 在Web开发中,表单验证是非常重要的一部分,可以帮助我们保证用户输入的数据的准确性、有效性和安全性。BootstrapValidator是一个快速且易于使用的jQuery表单验证插件,它可以通过简单的配置和调用API即可实现表单验证。本攻略将带你一步步完…

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