jquery + js 基本实现todolist 增删改查,计时器,时间动态展示

纯javascript/jquery 实现表格的动态增删改 一、为什么要用javascript/jquery 实现表格的动态增加删除?        1、跨平台:javascript/jquery 是属于浏览器脚本语言,不受后台服务器的编程语言限制,不管你是用.net技术还是java ,或者是C/C++,都可以是去使用javascript做特效。       2、动态性:javaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服 阅读详情

不同todolist版本演示

3月20日

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. input输入框回车确定添加内容
  1. 添加键盘监听事件
  2. 读取本地存储内容
  3. 将新的内容添加到本地存储并保存
  4. 渲染内容
$(function () {
    renderDate()
    // 1.为TODOlist输入框,添加按下事件,添加todo内容
    $("#title").on("keydown", function (event) {
        //回车键
        if (event.keyCode === 13) {
             let value = $(this).val()
            if ($.trim(value) === "") {
                alert("请输入内容!")
            } else {
                // 读取本地文件---》刷新后显示
                let localFile = getDate();
                //更新本地文件到本地
                localFile.push({ title: $(this).val(), done: false })
                // 存储本地文件
                saveFile(localFile)
                renderDate()
                // $(this).prop("value") =' '
                // location.reload ()
                $(this).val('')//回车后清空input框中的内容
            }
        }
    });
2. 更改待办状态
  1. 为创建的input标签添加点击事件
  2. 如何确定指定的点击对象?
    • 通过本地存储为a标签添加的索引,找到相应的input标签
  3. 点击input标签,更改本地存储对应的属性并保存,通过属性作为渲染的依据
3. 删除待办
  1. 完成和未完成都需要删除按钮
  2. 删除是删除本地存储对应的内容
  3. 如何删除指定的内容?
  1. 通过渲染添加标签时,为a标签添加的id,可以找到对应的本地存储对象,并删除
  2. 为删除按钮添加点击事件
  3. 获取按钮a的索引标记
  4. 获取本地存储对象数组,通过索引删除指定对象
  // 删除
    /* 思路分析:
    1. 点击那a(删除按键)就会删除对应的todolist对象数组中的对象,然后渲染
    2. 关键:如何将a和数组对象进行关联,由于a是在遍历对象数组时添加的,同时数组对象索引是可以使用的
    所有可以通过,为a元素添id,并且与数组索引关联,获取a的id,就可以得到数组的索引,通过id删除数组索引,
    让后保存到本地,最后渲染
    */
    $("ol,ul").on('click', 'a', function () {
        // 得到本地数据
        let date = getDate()
        // 获取数据与a对于的id,删除数据
        let index = $(this).attr('id')
        date.splice(index, 1)
        // 保存数据到本地
        saveFile(date)
        // 渲染
        renderDate()
    })
4. 修改待办
  1. 获取要修改的对象的索引
  2. 根据索引找到数组对象,并修改内容
  3. 保存到本地
  4. 渲染
 // 修改数据
    $("ol,ul").on('click', '.update', function () {
        
        while (true) {
            let contentNew = prompt('请输入要修改的内容,放弃修改请输入1')
            if($.trim(contentNew) === '1'){
                return true
            }
            if ($.trim(contentNew) === ''){
                alert('内容不能为空或空格')
                // return false
            }else{
             // 得到本地数据
            let date = getDate()
            // 获取数据与a对于的id,删除数据
            let index =$(this).siblings('a').attr('id')
            date[index].title = contentNew;
            saveFile(date)
            // 渲染
            renderDate()
            return false
            }
        }
    })
5. 查找待办
   // 查找数据
function keywordSubmit() {
    //获取输入框中的关键字
    // 在jquery中,trim()方法用于去除字符串两端的空白字符,语法为“$.trim(str)”;
    // trim()方法会移除字符串开始和末尾处的所有换行符、空格(包括连续的空格)和制表符。
    // 排查空格对关键字符查找的影响
    const keyword = $.trim($("#title").val());
    //匹配查找
    $('.p_li').each(function () {//遍历获取标签对象内容——————此处不需要通过本地存储来获取,简单方便
      const text = $(this).text();
      if (keyword) {
        if (new RegExp(keyword.toLowerCase()).test(text.toLowerCase())) {
          $(this).parent(). show();
        } else {
            //直接调用显示影藏方法
          $(this).parent(). hide();
        }
      } else {
        $(this).parent().show();
      }
    });
  }
6. 简单定时器
  1. 与删除逻辑基本相似——写法
  2. 点击添加不同的定时器
  3. 但是无法时间定时器的本地存储——页面刷新后消失
7. 待办个数统计
  1. 渲染时,在ol ul分别添加自增计数
  2. 添加到设定好的标签当中
8 点击随机名言显示
  1. 将名言和作者存储在数组对象当中
  2. 使用随机函数获取随机序号
  3. 通过获取过的随机序号得到数组对象元素属性
  4. 添加属性到网页标签当中
 // 随机名言展示
        const saying = document.querySelector('.saying')
        const writer = document.querySelector('.writer')
        let wisdoms = [
            {
                saying: '弱小和无知并不是生存最大的障碍,傲慢才是',
                writer: '刘慈欣'
            },
            {
                saying: '人生而自由,但无往不在枷锁之中',
                writer: '卢梭'
            },
            {
                saying: '如果我比笛卡尔看得远些,那是因为我站在巨人们的肩上的缘故',
                writer: '牛顿'
            },
            {
                saying: '世间本无路,走的人多了,也就成了路。',
                writer: '鲁迅'
            },
            {
                saying: '人最苦的是梦醒了却无路可走',
                writer: '鲁迅'
            },
            {
                saying: '大道至简,实干为先',
                writer: '匿名'
            },
            {
                saying: '生活本就沉闷但跑起来就有风',
                writer: '匿名'
            }

        ]
        //1.随机函数--》获取序号
        function getRandom(N, M) {
            return Math.floor(Math.random() * (M - N + 1)) + N
        }
        saying.addEventListener('click', function () {
            let index = getRandom(0, 8)
            saying.innerHTML = `「  ${wisdoms[index].saying}  」`
            writer.innerHTML = `--- ${wisdoms[index].writer}`
        })
9. 动态显示时间
  1. 页面加载便显示时间<body onload="startTime()">
  2. 使用定时器每秒调用一次函数
        // 动态显示时间
        function startTime() {
            var today = new Date();//定义日期对象   
            var yyyy = today.getFullYear();//通过日期对象的getFullYear()方法返回年    
            var MM = today.getMonth() + 1;//通过日期对象的getMonth()方法返回年    
            var dd = today.getDate();//通过日期对象的getDate()方法返回年     
            var hh = today.getHours();//通过日期对象的getHours方法返回小时   
            var mm = today.getMinutes();//通过日期对象的getMinutes方法返回分钟   
            var ss = today.getSeconds();//通过日期对象的getSeconds方法返回秒   
            // 如果分钟或小时的值小于10,则在其值前加0,比如如果时间是下午3点20分9秒的话,则显示15:20:09   
            MM = checkTime(MM);
            dd = checkTime(dd);
            mm = checkTime(mm);
            ss = checkTime(ss);

            var day; //用于保存星期(getDay()方法得到星期编号)
            if (today.getDay() == 0) day = "星期日 "
            if (today.getDay() == 1) day = "星期一 "
            if (today.getDay() == 2) day = "星期二 "
            if (today.getDay() == 3) day = "星期三 "
            if (today.getDay() == 4) day = "星期四 "
            if (today.getDay() == 5) day = "星期五 "
            if (today.getDay() == 6) day = "星期六 "
            document.querySelector('.time').innerHTML = hh + ":" + mm + ":" + ss + "   ";
            document.querySelector('.date').innerHTML =  yyyy + "年" + MM + "月" + dd + "日" +"  "+day

            setTimeout('startTime()', 1000);//每一秒中重新加载startTime()方法 

        }
        function checkTime(i) {
    
            if (i < 10) {
                i = "0" + i;
            }
            return i;
        }  
10. 其他内容
  1. 点击上下箭头隐藏列表
  2. 点击事件隐藏内容主体
11. 主要方法
  1. 本地存储内容获取方法getDate()
function getDate() {
        //用数组接受数据内容
        let date = localStorage.getItem('todolist')
        if (date !== null) {
            return JSON.parse(date)//一定是复杂数据类型,并且转换为对象
        } else {
            return []
        }
    }
  1. 本地存储数据内容保存方法saveFile()
  // 保存文件
    function saveFile(date) {
        localStorage.setItem("todolist", JSON.stringify(date))//存储的是字符串对象,获取的是对象
    }
  1. 本地存储内容渲染到页面方法renderDate()
 // 渲染数据
    /* 
        1. 获取本地存档的对象数组
        2. 遍历数组,获取数组title属性
        3. 将title属性的值,赋值给输入框    
    */
    function renderDate() {
        let date = getDate()
        // 计数
        let doneCount = 0
        let todoCount = 0
        //console.log(date);
        // 遍历对象数组
        // 遍历前先清空li防止重复
        $("ol,ul").empty()
        $.each(date, function (i, n) {
            /* i表示对象数组的索引从0 开始,n表示单个对象 */
            // 根据属性checked的不同添加到不同的标签当中
            if (date[i].done) {//点击过
                $("ul").prepend(`<li><input type = 'checkbox' checked = 'true'><p>${n.title} 
                </p><a href ='javascript:;' id =${i}></a></li>`)
                doneCount++
            } else {
                $("ol").prepend(`<li><input type = 'checkbox'><p>${n.title} </p><dl>
                <dt >推迟</dt>
                <dd class = one>1分钟</dd>
                <dd class = five>5分钟</dd>
                <dd class = twenty-five>25分钟</dd>
                <dd class = thirty>30分钟</dd>
            </dl><a href ='javascript:;' id =${i}></a></li>`)
                todoCount++
            }
        })
        // 计数
        /* 每次渲染每次更新计数 */
        $("#todocount").text(todoCount)

        $("#donecount").text(doneCount)
    }
12. 本地存储的数据格式

键:todolist
值:{ title: xxx, done: false }

  1. 依照对象的形式存储,因此存储的是复杂数据类型
  2. 在本地存储的是对象字符串——localStorage.setItem(“todolist”,JSON.stringify(data))
    JSON.stringify()
  3. 获取时存储到本地对象数组的是对象——localStorage.getItem(“todolist”,JSON.parse(data))
    JSON.parse()
  4. 本地存储中一个键,可以存储多个内容

用jQuery实现简单的增删改查操作 【代码】用jQuery实现简单的增删改查操作。 阅读详情

相关推荐

用vue实现todos,todos里面包含了增删改查功能,不会的看过来,保准你会!!!

一.先写静态页面,然后把静态页面分组件划分,最后再写效果,效果有增删改查。 二.效果展示: 三.代码展示: todos.css: *{ padding: 0; margin: 0; } ul,ol,li{ list-style: none; } body{ background-color: #F5F5F5; } #app{ width: 550px; margin: 10px auto; } .title{ height: 150px; line-height: 150.

m0_62201566的博客 1231

【jQuery案例】todolist待办事项清单 jQuery+JS实现

近期完成了一个仿 todolist 的一个任务事项管理页面,简洁的布局,斜对称的设计更加美观,仅仅用到了本地存储,纯前端,这篇文章给大家分享源码并分析一下其 jQuery 实现过程 页面展示: 未添加事项页面: 添加事项(回车,点击添加均可触发): 做完事项后勾选左侧选项 点击右侧橙色按钮删除事项 主题切换(目前写入了两个主题): 左侧工具栏操作说明 .........

weixin_52212950的博客 3000

JS待办事项列表添加删除代码.zip

非常实用的特效代码,可以完美运行,可以二次修改!

JavaScript 实现todolist中的增删改查功能

js实现todolist的增删改查, 包括html和css网页布局,详细使用flex布局 window对象 DOM节点操作,获取元素 Date事件对象 按钮点击事件 使用变量存储状态 - 存储变量到localstorage - 从localstorage中读取数据 - 字符串和数组的互相转换 BOM高级事件操作

weixin_63689594的博客 802

windows11系统封装教程

1、 现在电脑品牌各式各样,小白对电脑软件的安装存在较大的难题,今天笔者针对以上的问题做如下教程:windows11系统封装教程方式为视频方式。

cyz141001的博客 5879

setup time和hold time的计算

内容仅仅为了方便记忆,与原理无关

sddhyl的博客 7810

使用bootstrap+jQuery实现简单的学生管理系统增删改查功能

本项目是在不使用数据库的情况下使用bootstrap和jQuery实现简单的增删改查的功能,如有错误敬请指正!

Geng_____的博客 1462

告别Sourceforge安装器!手把手教你下载MinGW-w64离线包并配置环境变量(Windows 10/11)

本文详细介绍了如何在Windows 10/11系统上通过下载MinGW-w64离线包并配置环境变量,完全绕过Sourceforge安装器的问题。从选择正确的版本、解压到本地目录,到设置系统环境变量和验证编译环境,手把手指导开发者快速搭建稳定的GCC编译环境,解决常见的安装困扰。

weixin_30896825的博客 335

html待办事项表格代码,jQuery待办事项列表

我使用jQuery(和JS当然)编写的简单待办事项列表。 我已经创建了静态待办事项列表,只有通过编辑代码才能添加新项目。从逻辑上讲,我现在要创建一个动态列表。jQuery待办事项列表我已经尝试了一些方法,如.load()代码从外部文件创建.after(),但这一切都出错了。你会建议我做什么?我会很感激,如果你能帮助我解决这个问题。Gloserio,是的,添加项目现在不工作,因为我所描述的问题的我。...

weixin_34023576的博客 462

抖音视频数据获取实战:从API调用到热门内容挖掘

通过抖音API获取视频数据,企业可快速构建数据驱动的运营体系。本文提供了从权限申请到商业落地的全流程指南,建议结合自身业务扩展功能。如有技术问题,欢迎​​评论​​区留言讨论!#抖音开发 #数据挖掘 #短视频运营 #API调用 #Python实战。

WBKJ_Noah_的博客 6385

Lumerical官方案例、FDTD时域有限差分法仿真学习(十三)——多模干涉耦合器(MMI)

计算通过 1×2 端口多模干涉 (MMI) 耦合器的宽带传输和光损耗。 使用设备 S 参数在 INTERCONNECT 中创建 MMI 的紧凑模型。 它还展示了如何使用 CML 编译器提取这些参数以生成紧凑模型。 一、概述 了解模拟工作流程和关键结果 低损耗光合路器和分路器是基于 Mach-Zehnder 的光调制器的基本组件,并且是集成电路的关键组成部分。通过在输入/输出波导处使用线性锥形确保输入/输出波导的模式与干涉区域之间的

weixin_45719141的博客 1万+

基于jquery开发的todolist待办事列表清单项目

目录前提:一、项目介绍:二、todolist项目分析三、todolist核心功能实现四、完整的jquery代码:五、注意事项六、代码仓库七、参考资料: 前提: 这里只介绍jquery所实现的操作部分,页面的html和css部分这里就不在详细介绍,需要看源码的伙伴可以到底部中的项目仓库链接中获取。 一、项目介绍: 文本框里面输入内容,按下回车,就可以生成待办事项。 点击待办事项复选框,就可以把当前数据添加到已完成事项里面。 点击已完成事项复选框,就可以把当前数据添加到待办事项里面。 但是本页面内容刷新页面不

Bofu 878

Vscode+ROS/ROS2 开发调试基于ROS/ROS2应用环境配置

在ROS操作系统开发应用程序时,我们常常需要调试代码,验证程序的正确性。但是在用rosrun或者roslaunch启动节点后,若程序运行过程中发生错误而导致发生出错停止工作,这时候终端并不会输出具体的信息指出在何处发生了错误,具体错误的原因又是什么。往往仅仅是core dump 或者segmentation fault 等等一类的模糊提示。

Chasinglight的博客 5800

8.jQuery例子——增删改查

一、增加记录 1.Jquery中each遍历方法的使用 定义:jquery中提供了each方法类似JavaScript中的for(var i=0;i<length;i++)、使用方式如下 <script type="text/javascript"> //对象的封装 var app={ data:[{id:1,name:"战争之王",city:"暗...

qq_35574190的博客 1178

四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

移位寄存器有哪些分类呢? 按移位方向分类:①单向移位寄存器(包括左移、右移)②双向移位寄存器 按循环方式分类:①循环移位寄存器②非循环移位寄存器 按部位的不同分类:①逻辑移位寄存器②算术移位寄存器 按输入输出方式分类:①串入串出②串入并出③并入串出④并入并出

Loudrs的博客 1万+

借助Gemini 3 Pro高效解决课题申报中的五大核心痛点,亲测有效经验分享

之前给大家分享过关于AI辅助课题申报的相关的内容,涵盖了申报书部分撰写技巧,但没针对性拆解各位同仁在实际申报时遇到的卡壳的地方。比如选题范围拿捏不准,定的太大,根本没法落地完成;定的太小,研究价值则体现不了;写综述时,容易单纯罗列文献,缺乏批判性视角,没办法自然融入自己的判断,找不到研究缺口;研究方法部分,可能担心方法设计不够严谨,别人难以复现.....针对这些申报中的高频痛点,接下来七哥会从五个核心要点出发,借助Gemini 3 Pro高效解决这些痛点。

智能AI让学术科研更容易 700

使用jQuery完成表格的增删改查4个功能

最终可以实现4个功能。

qq_180494790的博客 1604

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用JavaScript和jQuery实现表格增删改(图书管理系统)

使用JavaScript和jQuery实现表格增删改(图书管理系统)

KKKKKKKMAx的博客 1101

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Jquery实现增删改除

在这选择你需要的使用的,在这个例子中使用的是:jquery-3.6.3.js。append/prepend 是在选择元素内部嵌入。prepend() - 在被选元素的开头插入内容。remove() - 删除被选元素(及其子元素)append() - 在被选元素的结尾插入内容。before() - 在被选元素之前插入内容。after/before 是在元素外面追加。after() - 在被选元素之后插入内容。empty() - 从被选元素中删除子元素。添加新的 HTML 内容。

qq_62512326的博客 561

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jQuery对Dom元素的增删改操作常用方法

toggleClass():在元素上添加/移除一个类名。prepend():将元素添加到目标元素的开头。html():设置或获取元素的 HTML 内容。addClass():为元素添加一个或多个类名。append():将元素添加到目标元素的末尾。remove():删除目标元素及其子元素。before():在目标元素前添加元素。text():设置或获取元素的文本内容。after():在目标元素后添加元素。empty():清空目标元素的子元素。attr():设置或获取元素的属性值。

m0_46639782的博客 829

jQuery-给自己做一个拥有增删改查功能的任务管理器【重点】

我们今天来做一款可以存储信息的任务管理器,可以说是我们前端入门的第一个小项目了,人机数据交互,LOGO是自己随便设计的,大家凑合看,主要是功能的实现,功能的实现思路,然后我们直接上所有源代码,大家可以随意使用,转载请标明出处 ...

世界和我们都不该止步于此 463

用jQuery--实现todolist待办事项清单

效果图 实现todolist整体思路: 思路图如果看着不方便 js代码里面已经做好详细注释 html代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta nam...

xiaofiy的博客 1429

ToDoList 增删改查

ToDoList 主要功能 增加数据 删除数据 修改数据 查询数据渲染页面 1 . HTML页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <link rel="icon" href="%PUBLIC_URL%/favicon.ico" ...

xiaoenwu的博客 363

vue实现todolist的增删改查

vue实现todolist的目录和效果图 app.vue <template> <div id="app"> <div className='container'> <Inputs @addItem="addItem" @search="search"></Inputs> <List :list="list"></List> <Total @sendCheckAll=

lxs19930928的博客 1408

vue+element-ui 实现todoList(增删改查)

<template> <div> <el-input placeholder="请输入内容" v-model="input" @change="submit" style="width: 200px; margin: 20px 0px" > <!-- <template #suffix> <div class="icon"> .

qq_48930299的博客 838

TODOList 数据增删改查的操作

TODOList 数据增删改查的操作       思路:                      1、UI界面怎么实现 &nb...

qiqiyiyi_的博客 1003
上一篇: java环境变量配置详细教程
下一篇: 严重: Failed to initialize end point associated with ProtocolHandler [“http-bio-8080“]问题解决方案
追思忆己
博客等级 码龄4年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值