您的位置:首页 > 健康 > 美食 > 武汉小程序开发制作_北京互联网营销公司_公司建网站流程_武汉seo关键词排名

武汉小程序开发制作_北京互联网营销公司_公司建网站流程_武汉seo关键词排名

2025/4/2 20:28:53 来源:https://blog.csdn.net/2301_80636070/article/details/146777731  浏览:    关键词:武汉小程序开发制作_北京互联网营销公司_公司建网站流程_武汉seo关键词排名
武汉小程序开发制作_北京互联网营销公司_公司建网站流程_武汉seo关键词排名

toDoList 备忘录

  1. 文本框里面输入内容,按下回车,就可以生成待办事项。
  2. 点击待办事项复选框,就可以把当前数据添加到已完成事项里面。
  3. 点击已完成事项复选框,就可以把当前数据添加到待办事项里面。
  4. 但是本页面内容刷新页面不会丢失。
  5. 切记: 页面中的数据,都要从本地存储里面获取,这样刷新页面不会丢失数据,所以先要把数据保存到本地存储里面。
  6. 利用事件对象.keyCode判断用户按下回车键(13)。
  7. 声明一个数组,保存数据。
  8. 先要读取本地存储原来的数据(声明函数 getData()),放到这个数组里面。
  9. 之后把最新从表单获取过来的数据,追加到数组里面。
  10. 最后把数组存储给本地存储 (声明函数 savaDate())
  11. 因为后面也会经常渲染加载操作,所以声明一个函数 load,方便后面调用
  12. 先要读取本地存储数据。(数据不要忘记转换为对象格式)
  13. 之后遍历这个数据($.each()),有几条数据,就生成几个小li 添加到 ol 里面。
  14. 每次渲染之前,先把原先里面 ol 的内容清空,然后渲染加载最新的数据。
  15. 点击里面的a链接,不是删除的li,而是删除本地存储对应的数据。
  16. 核心原理:先获取本地存储数据,删除对应的数据,保存给本地存储,重新渲染列表li
  17. 我们可以给链接自定义属性记录当前的索引号
  18. 根据这个索引号删除相关的数据----数组的splice(i, 1)方法
  19. 存储修改后的数据,然后存储给本地存储
  20. 重新渲染加载数据列表 因为a是动态创建的,我们使用on方法绑定事件
  21. 当我们点击了小的复选框,修改本地存储数据,再重新渲染数据列表。
  22. 点击之后,获取本地存储数据。
  23. 修改对应数据属性 done 为当前复选框的checked状态。
  24. 之后保存数据到本地存储
  25. 重新渲染加载数据列表
  26. load 加载函数里面,新增一个条件,如果当前数据的done为true 就是已经完成的,就把列表渲染加载到 ul 里面
  27. 如果当前数据的done 为false, 则是待办事项,就把列表渲染加载到 ol 里面
  28. 当我们点击了小的复选框,修改本地存储数据,再重新渲染数据列表。
  29. 点击之后,获取本地存储数据。
  30. 修改对应数据属性 done 为当前复选框的checked状态。
  31. 之后保存数据到本地存储
  32. 重新渲染加载数据列表
  33. load 加载函数里面,新增一个条件,如果当前数据的done为true 就是已经完成的,就把列表渲染加载到 ul 里面
  34. 如果当前数据的done 为false, 则是待办事项,就把列表渲染加载到 ol 里面

一、 我们要实现上面的功能, 首先就是要实现本地存储的任务!让我们一起去回顾一下js里面的本地存储:

    localStorage.setItem(key, value) // 用于本地存储

   1. 本地存储里面只能存储JSON字符串的数据模式  把我们的数组对象转换为字符格式 JSON.stringify()

    localStorage.setItem("todo", JSON.stringify(todolist)) // 本地存储 将todolist转换成JSON字符串的格式进行存储

 localStorage.getItem(key) // 用于从本地存储中进行获取值

    let data = localStorage.getItem("todo")

2. 获取本地存储数据 我们需要把里面的字符串数据转换成 对象格式 JSON.parse()

    data = JSON.parse(data) // JSON.parse(data) 用于将 JSON 格式的字符串 转换回 JavaScript 对象/数组
  <script>// 本地存储let todolist = [{title: '我今天吃了八个馒头',done: false}, {tilte: '我今天学习jQuery',done: false},]; // 创建字典序型数组// localStorage.setItem(key, value) // 用于本地存储// 1. 本地存储里面只能存储JSON字符串的数据模式  把我们的数组对象转换为字符格式 JSON.stringify()localStorage.setItem("todo", JSON.stringify(todolist)) // 本地存储 将todolist转换成JSON字符串的格式进行存储let data = localStorage.getItem("todo")// localStorage.getItem(key) // 用于从本地存储中进行获取值console.log(typeof data)// 2. 获取本地存储数据 我们需要把里面的字符串数据转换成 对象格式 JSON.parse()data = JSON.parse(data) // JSON.parse(data) 用于将 JSON 格式的字符串 转换回 JavaScript 对象/数组console.log(data)console.log(data[0].title)</script>

这里的jQuery完全实现了关于正在进行 和 已经完成的相互切换 实现了元素之间的增删查改,源文件再这里:https://gitee.com/liu-yihao-hhh/j-query-study/blob/master/jQuery-03/13-todolist/js/todolist.js

强烈推荐自己手撕三遍 !!!一遍完全根本就不够!自己写出来的话,成就感十足~

$(function () {// alert(11)load()// 1. 按下回车 把完整数据 存储到本地存储里面// 存储的数据格式 let todolist = [{title: "xxx", done: false}]$("#title").on("keydown", function (e) {// 回车键的ASCII值是13if (e.keyCode === 13) {// alert(11)// 1. 先读取本地存储的数据 在外面声明一个函数 每次需要读取的时候就直接调用即可let local = getDate() // local 得到本地存储数据// console.log(local)// 2. 把local数组进行更新数据 把最新的数据追加给local数组local.push({ title: $(this).val(), done: false })// 2.1 把这个数组local存储到本地存储 声明一个保存本地存储函数saveDate(local)// 3. 将本地数组渲染到页面// 3.1 先读取数据load()$(this).val("")}})// 2. 读取本地存储的数据function getDate() {let data = localStorage.getItem("todolist")if (data !== null) {// 本地存储里面的数据是字符串格式的 但是我们需要的是对象格式的return JSON.parse(data)}else return []}// 3. 保存本地存储函数function saveDate(data) {localStorage.setItem("todolist", JSON.stringify(data))}// 4. 渲染加载数据function load() {let data = getDate()// 遍历这个数据// 这里会有一个很无语的bug 就是当页面没有被清空的时候 你进行追加数据 那么页面就会将本地存储已经存在的内容再次进行打印一遍// 所以 这里要先进行清空页面(清空ol里面的元素) 然后再进行追加$("ol,ul").empty()let todoCount = 0let doneCount = 0$.each(data, function (i, n) {// console.log(n)if (n.done) $("ul").prepend("<li><input type='checkbox' checked='checked'> <p>" + n.title + "</p> <a href='javascript:;' id=" + i + "></a></li>"), doneCount++else $("ol").prepend("<li><input type='checkbox'> <p>" + n.title + "</p> <a href='javascript:;' id=" + i + "></a></li>"), todoCount++})$("#todocount").text(todoCount)$("#donecount").text(doneCount)}// 5. 删除操作// 由于我们是本地存储进行渲染,那么我们只要对本地存储的该元素进行删除 然后再次渲染即可// 事件委托 因为li的增加是动态操作$("ol, ul").on("click", "a", function () {// 先获取本地存储let data = getDate()// console.log(data)// 修改数据// 这里还是不能用这个方法 容易被写死index// let index = $(this).parents("li").index()let index = $(this).attr("id")console.log(index)// data.splice(data.length - index - 1, 1)// console.log(data)data.splice(index, 1)// 保存到本地存储saveDate(data)// 重新渲染页面load()})// 6. 正在进行 和 已经完成的选项$("ol, ul").on("click", "input", function () {// alert(111)// 先获取本地存储的数据let data = getDate()// 修改数据// let index = $(this).parents("li").index()// index = data.length - index - 1let index = $(this).siblings("a").attr("id")console.log(index)data[index].done = $(this).prop("checked")console.log(data)// 保存到本地存储的数据saveDate(data)// 重新渲染页面 这里对load()函数进行修改// 当done为true 就放在"已经完成里面" done为false 就放在 "正在进行里面"load()})})

总结不易~ 本章节对我有很大的收获 希望对你也是!!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com