ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # ToDoList 学习记录 ![](https://img.kancloud.cn/32/b2/32b2f03cc22fef34ee89653b86ec5f8a_827x347.png) ![](https://img.kancloud.cn/c1/ee/c1ee4dc7efcf30404bcb65b33c882854_884x352.png) ![](https://img.kancloud.cn/1f/81/1f81a2194f83ccb3e98975fe6d919377_887x423.png) html ![](https://img.kancloud.cn/77/e9/77e92911dccd59888db664e0eed05ca6_1163x534.png) js需要实现的 ![](https://img.kancloud.cn/08/36/0836d6aabafbcd8c58bce1c4ac5d45ed_759x244.png) 引入文件 ![](https://img.kancloud.cn/5c/56/5c56b68611f74d6013415f43ad7170df_755x136.png) ## 实验要求 ![](https://img.kancloud.cn/0b/89/0b8936e4275bb35538b049ca4ece0981_727x162.png) ## 案例分析 : toDoList分析 ①刷新页面不会丢失数据,因此需要用到本地存储localStorage ②核心思路:不管按下回车,还是点击复选框,都是把本地存储的数据加载到页面中,这样保证刷新关闭页面不会丢失数据 ③存储的数据格式: var todolist= \[{ title: 'xx' , done: false}\] ④注意点1 :**本地存储localStorage**里面**只能存储字符串格式**,因此需要把对象转换为字符串**JSON.stringify(data)**. ⑤注意点2**:获取本地存储数据**,需要把里面的**字符串转换为对象格式**JSON.parse()我们才能使用里面的数据。 ~~~ <script> var todolist = [{ title: '我今天吃八个馒头',done: false}, {title: '我 今天学习',done: false}, ]; // localStorage.setItem("todo", todolist) ; // 1.本地存储里面只能存储字符串的数据格式把我们的数组对象转换为字符串格式JSON. stringify() localStorage.setItem( "todo",JSON. stringify (todolist)); var data = localStorage.getItem("todo") // console.log(typeof data) ; // console.log(data[0]. title); // 2.获取本地存储的数据我们需要把里面的字符串数据转换为对象格式JSON. parse( ) data = JSON.parse (data); console.log(data); console.log(Hata[0].title); </script> ~~~ # 代码实验 ## 1.案例: toDoList按下回车把**新数据添加到本地存储里面** ~~~ ①切记:页面中的数据,都要从本地存储里面获取,这样刷新页面不会丢失数据,所以先要把数据保存到本地存储里面。 ②利用事件对象.keyCode判断用户按下回车键(13)。 ③声明一个数组,保存数据。 ④先要读取本地存储原来的数据(声明函数getData()) , 放到这个数组里面。 ⑤之后把最新从表单获取过来的数据,追加到数组里面。 ⑥最后把数组存储给本地存储(声明函数savaDate()) ~~~ ### 代码实验 1.修改(saveDate(local);) ![](https://img.kancloud.cn/6f/02/6f02d1130be81a9a978c249da0554926_1006x382.png) //读取本地存储的数据 ~~~ function getDate() { var data = localStorage . getItem(" todolist"); if (data !== nu1l) { //本地存储里面的数据是字符串格式的但是我们需要的是对象格式的 return JSON . parse(data); } else { return []; } } ~~~ //保存本地存储数据 ~~~ function saveDate(data) { localstorage.setItem( "todolist",JSON. stringify(data)); } ~~~ ## 2.案例: toDoList本地存储数据**渲染加载到页面** ~~~ ①因为后面也会经常渲染加载操作,所以声明一个函数load ,方便后面调用 ②先要读取本地存储数据。( 数据不要忘记转换为对象格式) ③之后遍历这个数据( $.each0) , 有几条数据,就生成几个小i添加到ol里面。 ④每次渲染之前,先把原先里面ol的内容清空,然后渲染加载最新的数据. ~~~ ### 2.代码实验 2.![](https://img.kancloud.cn/30/d0/30d0139faf73b8822e308040e1124187_1147x623.png) 修改版2.0 ![](https://img.kancloud.cn/81/c9/81c9d8243bdfd904a70573c3e8fb43a4_1008x612.png) //渲染加载数据 ~~~ function load() { //读取本地存储的数据 var data getDate( ); console.1og(data); //遍历之前先要清空ol里面的元素内容 $("ol" ).empty(); //遍历这个数据 $.each(data, function(i, n) { // console.log(n); $("ol").prepend("<li><input type=' checkbox' > <p>" + n.title + "</p> <a href='javascript: ; '></a></li>") }) } ~~~ ## 3.案例: toDoList删除操作 ![](https://img.kancloud.cn/dc/2f/dc2f20091a3279df564ff7b906c5d017_931x270.png) ![](https://img.kancloud.cn/41/fb/41fbe193bb99244f3344d2e69fe7e28d_842x215.png) ### 3.代码实验 ![](https://img.kancloud.cn/e0/fa/e0fa2ac6fc908a3361a3c5a4a80cad37_1192x513.png) ![](https://img.kancloud.cn/a6/3d/a63da133168155a9b6c7a5e7f3905043_691x170.png) ![](https://img.kancloud.cn/27/65/2765bd269fb4ebbc7afe6af659c0335a_905x722.png) ## 4.案例: toDoList正在进行和已完成选项操作 ![](https://img.kancloud.cn/9c/49/9c49fa09be61d032cdf6b2c0525cd599_1239x469.png) ![](https://img.kancloud.cn/49/8b/498b3dce52727f00fd1ce0ec572172ce_1119x264.png) ### 4.代码实验 ![](https://img.kancloud.cn/66/05/66055487425fa0905518ea1326f3153d_783x610.png) ![](https://img.kancloud.cn/13/b0/13b08815e310ec837dd658f47e8c245a_1391x658.png) ## 5.案例: toDoList**统计**正在进行个数和已经**完成个数** ![](https://img.kancloud.cn/bb/29/bb2904228cd9dd6f7486a2dca670e8cd_926x409.png) ![](https://img.kancloud.cn/db/52/db52fca3400cead490d3207dd218c859_1039x167.png) ### 5.代码实验 ![](https://img.kancloud.cn/a8/da/a8dac6b7e8f781ba7d4589cbe9bde1f0_698x340.png) ![](https://img.kancloud.cn/66/7d/667df3585fd0937e57e62f9465eed1ef_1337x608.png)