使用前端三剑客实现一个备忘录

一,界面介绍

这个备忘录的界面效果如下:

可以实现任务的增删,并且在任务被勾选后会被放到已完成的下面。

示例:

(1),增加一个任务

(2),勾选任务

 

(3),删除任务

 二,代码实现

1,使用html进行界面设计

我们先将这个界面分为两部分,分别是第一部分:

 第二部分:

 设计的框架代码如下:

    <div class="nov"><input type="text"><button>新建事项</button></div><div class="container"><div class="todo"><div class="row"><h3>已完成</h3><span>吃饭</span><button>删除</button></div></div><div class="done"><h3>未完成</h3></div></div>

 效果如下:

2,使用css进行样式设计

<style>//将所元素的内边距和外边距设置为0px,并且设置盒子大小为原大小*{margin: 0px;padding: 0px;box-sizing: border-box;}//设置.nav类的大小和显示方式为flexbox,并且垂直居中,上边距为100px.nav{width: 800px;height: 100px;margin: 0px auto;padding: 0px;display: flex;align-items: center;margin-top: 100px;}//设置input的大小和边距,以及圆角.nav input{width: 600px;height: 60px;margin: 0px auto;border-radius: 0px;}//设置button的大小和圆角以及背景颜色和字体颜色.nav button{width: 200px;height: 60px;margin: 0px auto;border-radius: 0px;background-color: orange;color: white;}//设置按钮点击后的动作.nav button:active{color: blue;background-color: red;}//设置container类的样式.container{width: 800px;height: 60px;margin: 0px auto;display: flex;text-align: center;}h3{width: 400px;height: 60px;color: white;padding-top: 15px;background-color: black;}.row{height: 50px;display: flex;align-items: center;}.row input{width: 20px;margin-right: 0px;}.row span{width: 200px;margin-left: 0px;padding-left: 0px;text-align: left;}.row button{width: 40px;height: 30px;}.row button:active{background-color: red;color: blueviolet;}</style>

效果:

3,使用js进行动态效果展示

使用js就是要实现添加和删除,以及在事件被勾选后放到已完成队列当中的功能。

1,添加事件到todo盒子中
function newObj(){//先得到输入框内的信息let input = document.querySelector('.nav input')console.dir(input)//为了调试let input_info = input.value//输入框没有内容就不执行下面的代码if(input_info=="") return//创建div盒子let div = document.createElement('div')//创建复选框let check_button = document.createElement('input')check_button.type='checkbox'console.log(check_button)//创建spanlet span = document.createElement('span')span.innerHTML = input_info;console.log(span.innerHTML)//创建删除按钮let button = document.createElement('button')button.innerHTML="删除"//整合到div中div.appendChild(check_button)div.appendChild(span)div.appendChild(button)//设置div的样式div.className="row"//将div放到todo下面let todo = document.querySelector('.todo')todo.appendChild(div)}
2,设置删除事件
              //先找到所有的删除按钮let buttons = document.querySelectorAll(".row button")console.log(buttons)//遍历按钮,让这些删除按钮绑定上删除事件for(i=0;i<buttons.length;i++){buttons[i].onclick=function(){  //找到row divlet parent = this.parentNode//找到todo divlet grand = parent.parentNode//在todo div中删除rowgrand.removeChild(parent)}}
3,未完成事件被勾选后放到已完成事件下面
            //遍历复选框for(i = 0;i<check_buttons.length;i++){//绑定事件check_buttons[i].onclick=function(){let row = this.parentNode//插入者let target//判断插入者if(this.checked){target = document.querySelector('.done')}else{target=document.querySelector('.todo')}//插入target.appendChild(row)}}

三,所有代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><style>*{margin: 0px;padding: 0px;box-sizing: border-box;}.nav{width: 800px;height: 100px;margin: 0px auto;padding: 0px;display: flex;align-items: center;margin-top: 100px;}.nav input{width: 600px;height: 60px;margin: 0px auto;border-radius: 0px;}.nav button{width: 200px;height: 60px;margin: 0px auto;border-radius: 0px;background-color: orange;color: white;}.nav button:active{color: blue;background-color: red;}.container{width: 800px;height: 60px;margin: 0px auto;display: flex;text-align: center;}h3{width: 400px;height: 60px;color: white;padding-top: 15px;background-color: black;}.row{height: 50px;display: flex;align-items: center;}.row input{width: 20px;margin-right: 0px;}.row span{width: 200px;margin-left: 0px;padding-left: 0px;text-align: left;}.row button{width: 40px;height: 30px;}.row button:active{background-color: red;color: blueviolet;}</style><body><div class="nav"><input type="text"><button onclick="newObj()">新建事项</button></div><div class="container"><div class="todo"><h3>未完成</h3><div class="row"><input type="checkbox"><span>吃饭</span><button>删除</button></div></div><div class="done"><h3>已完成</h3></div></div></body><script>function newObj(){//先得到输入框内的信息let input = document.querySelector('.nav input')console.dir(input)//为了调试let input_info = input.valueinput.value=""if(input_info=="") return//创建div盒子let div = document.createElement('div')//创建复选框let check_button = document.createElement('input')check_button.type='checkbox'console.log(check_button)//创建spanlet span = document.createElement('span')span.innerHTML = input_info;console.log(span.innerHTML)//创建删除按钮let button = document.createElement('button')button.innerHTML="删除"//整合到div中div.appendChild(check_button)div.appendChild(span)div.appendChild(button)//设置div的样式div.className="row"//将div放到todo下面let todo = document.querySelector('.todo')todo.appendChild(div)//先找到所有的删除按钮let buttons = document.querySelectorAll(".row button")console.log(buttons)//遍历按钮,让这些删除按钮绑定上删除事件for(i=0;i<buttons.length;i++){buttons[i].onclick=function(){  //找到row divlet parent = this.parentNode//找到todo divlet grand = parent.parentNode//在todo div中删除rowgrand.removeChild(parent)}}//找到所有的复选框let check_buttons = document.querySelectorAll('.row input')//遍历复选框,看看是否被勾选for(i = 0;i<check_buttons.length;i++){check_buttons[i].onclick=function(){let row = this.parentNodelet targetif(this.checked){target = document.querySelector('.done')}else{target=document.querySelector('.todo')}target.appendChild(row)}}}
</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1554894.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Chat登录时出现SSO信息出错的解决方法

目录 1. 问题所示2. 问题所示3. 解决方法 1. 问题所示 此贴主要是总结回顾&#xff0c;对此放置在运维专栏 出现如下问题&#xff0c;很懵&#xff0c;以为是节点挂了还是网址蹦了 一直刷新&#xff0c;登录之后就出现这个问题 2. 问题所示 对于SSO&#xff0c;也就是单点登…

ExcelToWord-Excel套打Word-Word邮件合并工具分享

Excel to Word转换工具分享 在日常工作或学习中&#xff0c;我们常常需要将Excel中的数据导出到Word文档中&#xff0c;以便更好地展示信息。市场上有许多Excel to Word的转换工具&#xff0c;它们各有特色。今天&#xff0c;我们就来推荐几款这样的工具&#xff0c;并探讨一下…

基于Springboot+Vue的教师科研管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

用Python实现运筹学——Day 12: 线性规划在物流优化中的应用

一、学习内容 线性规划在物流优化中可以用于解决诸如配送路径优化、货物运输调度等问题。配送中心的路径优化问题本质上是寻找一条最优路径&#xff0c;在满足需求点的需求条件下&#xff0c;最小化配送的总运输成本或时间。常见的物流优化问题包括&#xff1a; 配送中心的货…

Python小示例——质地不均匀的硬币概率统计

在概率论和统计学中&#xff0c;随机事件的行为可以通过大量实验来研究。在日常生活中&#xff0c;我们经常用硬币进行抽样&#xff0c;比如抛硬币来决定某个结果。然而&#xff0c;当我们处理的是“质地不均匀”的硬币时&#xff0c;事情就变得复杂了。质地不均匀的硬币意味着…

【C++】—— 类和对象(中)

【C】—— 类和对象(中) 文章目录 【C】—— 类和对象(中)前言1. 类的默认成员函数2. 构造函数3. 析构函数4. 拷贝构造函数5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载 结语 前言 小伙伴们大家好呀&#xff0c;昨天的 【C】——类和对象(上) 大家理解的怎么样了 今天…

网约班车升级手机端退票

背景 作为老古董程序员&#xff0c;不&#xff0c;应该叫互联网人员&#xff0c;因为我现在做的所有的事情&#xff0c;都是处于爱好&#xff0c;更多的时间是在和各行各业的朋友聊市场&#xff0c;聊需求&#xff0c;聊怎么通过IT互联网 改变实体行业的现状&#xff0c;准确的…

卡码网KamaCoder 53. 寻宝

题目来源&#xff1a;53. 寻宝&#xff08;第七期模拟笔试&#xff09; C题解&#xff08;来源代码随想录&#xff09;&#xff1a;最小生成树 prim prim三部曲 第一步&#xff0c;选距离生成树最近节点第二步&#xff0c;最近节点加入生成树第三步&#xff0c;更新非生成树节…

随时随地,轻松翻译:英汉互译软件的便捷之旅

翻译英汉互译工具&#xff0c;就如同一位随时待命的语言助手&#xff0c;在这纷繁复杂的语言世界中为我们搭建起理解与沟通的桥梁。接下来&#xff0c;让我们一同深入了解这些神奇的英汉互译工具&#xff0c;探索它的诸多功能和独特魅力。 1.福晰在线翻译 链接直达>>h…

Python案例--三数排序

一、引言 在信息爆炸的时代&#xff0c;我们每天都会接触到大量的数据。无论是工作中的报表、学习中的数据集&#xff0c;还是日常生活中的购物清单&#xff0c;数据的有序性对于提高效率和决策质量都至关重要。排序算法作为数据处理的基础工具&#xff0c;其重要性不言而喻。…

RTSP协议讲解

1.RTSP协议 rtsp&#xff0c;英文全称 Real Time Streaming Protocol&#xff0c;RFC2326&#xff0c;实时流传输协议&#xff0c;是 TCP/IP 协议体系中的一个应用层协议。 RTSP 交互流程 1&#xff09;OPTIONS C--->S 客户端向服务器端发现 OPTIONS&#xff0c;请求可用…

netty之SpringBoot+Netty+Elasticsearch收集日志信息数据存储

前言 将大量的业务以及用户行为数据存储起来用于分析处理&#xff0c;但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用&#xff0c;往往数据库都采用分库分表设计&#xff0c;那么将这些分散的数据通过binlog汇总到一个…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

SQL专项练习第二天

在数据处理和分析中&#xff0c;Hive 是一个强大的工具。本文将通过五个 Hive 相关的问题展示其在不同场景下的应用技巧。 先在home文件夹下建一个hivedata文件夹&#xff0c;把我们所需的数据写成txt文件导入到/home/hivedata/文件夹下面。 一、找出连续活跃 3 天及以上的用户…

茄子病虫害数据集。四类:果肉腐烂、蛀虫、健康、黄斑病。4000张图片,已经按照8:2的比例划分好训练集、验证集 txt格式 含类别yaml文件 已经标注好

茄子病虫害数据集。可用于筛选茄子品质、质量&#xff0c;训练采摘机器人视觉算法模型……数据集大部分图片来源于真实果园拍摄的图片&#xff08;生长在果树之上的&#xff09;&#xff0c;图片分辨率高&#xff0c;数据集分为四类&#xff1a;果肉腐烂、蛀虫、健康、黄斑病。…

Pandas数据分析基础

目录标题 Pandas读取和写入数据数据读取读取csv读取excel数据输出 Pandas基础操作索引数据信息统计计算位置计算数据选择 Pandas高级操作复杂查询类型转换数据排序添加修改高级过滤数据迭代高阶函数 Pandas读取和写入数据 Pandas将数据加载到DataFrame后&#xff0c;就可以使用…

算法知识点————贪心

贪心&#xff1a;只考虑局部最优解&#xff0c;不考虑全部最优解。有时候得不到最优解。 DP&#xff1a;考虑全局最优解。DP的特点&#xff1a;无后效性&#xff08;正在求解的时候不关心前面的解是怎么求的&#xff09;&#xff1b; 二者都是在求最优解的&#xff0c;都有最优…

TB6612电机驱动模块(STM32)

目录 一、介绍 二、模块原理 1.原理图 2.电机驱动原理 三、程序设计 main.c文件 Motor.h文件 Motor.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件&#xff0c;它具有大电流 MOSFET-H 桥结构&#xff…

【每天学个新注解】Day 15 Lombok注解简解(十四)—@UtilityClass、@Helper

UtilityClass 生成工具类的注解 将一个类通过注解变成一个工具类&#xff0c;并没有什么用&#xff0c;本来代码中的工具类数量就极为有限&#xff0c;并不能达到减少重复代码的目的 1、如何使用 加在需要委托将其变为工具类的普通类上。 2、代码示例 例&#xff1a; Uti…

(C语言贪吃蛇)9.贪吃蛇撞墙找死

目录 游戏说明​ 1.撞墙死翘翘的情况 2.如何解决初始化问题 封装函数initSnake(); 注意事项 解决方法 总结 效果演示 游戏说明 玩家通过上下左右按键来控制小蛇的移动&#xff0c;我们之前的内容完成了小蛇每按下一次右键小蛇便向右移动一格&#xff0c;但是玩贪吃蛇一…