html5离线记事本
这是一个笔记应用,不需要联网,也不需要数据库,可以直接把数据储存在本地.方便易用! ^_^
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>记事本</title>
- <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
- <style>
- *{ margin: 0; padding: 0; box-sizing: border-box; font-family: 'Microsoft Yahei'; font-size: 14px; box-sizing: border-box;}
- h1{text-align: center; font-size: 26px; line-height: 60px;color: #ff8140;}
- .main{margin: 10px auto;width: 1000px; overflow: hidden; height: 500px;padding: 1%;border: 1px solid #ddd; border-radius: 5px;}
- input{ width: 92%; padding: 5px; outline: none;border: 1px solid #eee;}
- textarea{ width: 100%; overflow: hidden; padding: 5px; outline: none; resize:none; }
- textarea:focus,input:focus { border-color: #f77c3d; }
- .write{padding: 10px; border-radius: 3px; background: #eee; overflow: hidden; float: left;width: 48%;}
- .send{ background: #ff8140; border: 1px solid #f77c3d; color: #fff; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);
- width: 80px; height: 30px; text-align: center; line-height: 30px; border-radius: 3px; float: right; cursor: pointer; }
- .list{padding: 10px; float: left;width: 50%;}
- .item{padding: 10px;border: 1px solid #eee;border-radius: 3px;margin-bottom: 10px;}
- .item .content{padding: 20px 10px;word-break:break-all;background: #fff; display: none;}
- .title{padding-bottom: 5px;border-bottom: 1px solid #eee;cursor: pointer;}
- .title span{color: #999; font-size: 12px;float: right;}
- #noteList{overflow-y: scroll;height: 350px;box-shadow: 0 0 3px #ddd;}
- </style>
- </head>
- <body>
- <h1>记事本</h1>
- <div class="main">
- <div class="write" id="write">
- 标题: <input id="title" type="text" placeholder="请输入标题"><br><br>
- 分类: <select id="type">
- <option value="默认" selected>-请选择-</option>
- <option value="美食">美食</option>
- <option value="代码">代码</option>
- <option value="生活">生活</option>
- </select>
- <br><br>
- <textarea name="" id="cont" cols="30" rows="10" placeholder="今天想说点啥..."></textarea>
- <div class="send" id="add">添加</div>
- </div>
- <div class="list" id="list">
- 标题: <input id="title1" type="text" placeholder="查询标题"><br><br>
- 分类: <select id="type1">
- <option value="默认" selected>-请选择-</option>
- <option value="美食">美食</option>
- <option value="代码">代码</option>
- <option value="生活">生活</option>
- </select>
- <div id="search" class="send">查询</div><br><br>
- <div id="noteList"></div>
- </div>
- </div>
- <script type="template" id="temp">
- <div class="item">
- <div class="title">@title<span>@type: @date</span></div>
- <div class="content">@cont</div>
- </div>
- </script>
- <script>
- $(function(){
- var init = {title:'这是标题',
- date:new Date().toLocaleString(),
- type:'示例',
- cont:'这是一个笔记应用,不需要联网,也不需要数据库,可以直接把数据储存在本地.方便易用!^_^'};
- function show(notes){
- var temp = $('#temp').html();
- var tempStr= '';
- //如果不是数组,变成数组
- if(!Array.isArray(notes)){
- notes = [notes];
- }
- for(var i=notes.length-1;i>-1;i--){
- var note = notes[i];
- tempStr += temp.replace('@title',note.title)
- .replace('@date',note.date)
- .replace('@type',note.type)
- .replace('@cont',note.cont);
- }
- $('#noteList').html(tempStr);
- }
- //读取所有数据
- function showList(){
- var notes = localStorage.getItem('notes');
- if(!notes){
- show(init);
- }else{
- notes = JSON.parse(notes);
- show(notes);
- }
- //第一个展开
- $('#noteList .item:first').find('.title').trigger('click');
- }
- $('#add').click(function(){
- var title = $('#title').val();
- var cont = $('#cont').val();
- var type = $('#type').val();
- if(title == ''){
- alert('标题不能为空!');
- return;
- }
- var data = {title:title,cont:cont,type:type,date:new Date().toLocaleString()};
- var notes = localStorage.getItem('notes');
- if(!notes){
- notes = [];
- }else{
- notes = JSON.parse(notes);
- }
- notes.push(data);
- localStorage.setItem('notes',JSON.stringify(notes));
- showList();
- });
- $('#search').click(function(){
- var title = $('#title1').val();
- var type = $('#type1').val();
- var notes = localStorage.getItem('notes');
- if(!notes){
- alert('没有本地笔记数据!');
- return;
- }else{
- notes = JSON.parse(notes);
- }
- var note = [];
- for(var i=0;i<notes.length;i++){
- //notes[i] json对象
- var flag = false;
- if(!title){
- flag = notes[i].type==type;
- }else if(!type){
- flag = notes[i].title.indexOf(title)>-1;
- }else{
- flag = notes[i].title.indexOf(title)>-1 && notes[i].type==type;
- }
- if(flag){
- note.push(notes[i]);
- }
- }
- if(note.length == 0){
- alert('抱歉~没有对应的笔记!');
- }else{
- show(note);
- }
- });
- $('body').on('click','#noteList .title', function(){
- $(this).next().slideToggle();
- });
- showList();
- })
- </script>
- </body>
- </html>
html5离线记事本的更多相关文章
- 1分钟快速制作漂亮的Html5本地记事本
大家好,以前给大家分享过一个五步骤制作精美的HTML5时钟的文章,点击回顾<五步教你制作漂亮精致的HTML时钟>,还有<一分钟教你如何实现唯美的文字描边>:今天给大家分享一个用 ...
- HTML5离线缓存(Application Cache)
HTML5离线缓存又名Application Cache,是从浏览器的缓存中分出来的一块缓存区,要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源. ...
- HTML5 离线缓存管理库
一.HTML5离线缓存技术 支持离线缓存是HTML5中的一个重点,离线缓存就是让用户即使在断网的情况下依然可以正常的运行应用.传统的本地存储数据的方式有 localstorage,sessionsto ...
- HTML5离线Web应用实战:五步创建成功
[IT168 技术]HTML5近十年来发展得如火如荼,在HTML 5平台上,视频,音频,图象,动画,以及同电脑的交互都被标准化.HTML功能越来越丰富,支持图片上传拖拽.支持localstorage. ...
- 吓哭原生App的HTML5离线存储技术,却出乎意料的容易!【低调转载】
吓哭原生App的HTML5离线存储技术,却出乎意料的容易![WeX5低调转载] 2015-11-16 lakb248 起步软件 近几天,WeX5小编编跟部分移动应用从业人士聊了聊,很多已经准备好全面拥 ...
- html5 离线存储
在html页面中引入manifest文件 <html manifest="sample.appcache"> 在服务器添加mime-type text/cache-ma ...
- HTML5离线缓存问题
HTML5离线缓存问题 1.应用程序缓存 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. ...
- Manifesto – HTML5 离线应用程序缓存校验工具
Manifesto 是一个 HTML5 离线应用程序缓存校验工具,提供了快速校验 HTML5 manifest 文件有效性的方法.离线应用程序缓存在使用中最困难的部分之一就是无法正常工作的时候没有明显 ...
- HTML5离线存储原理
找到一篇介绍离线缓存的,感觉比之前看到的解释的更透彻,新的知识点记录如下: 大家都知道Web App是通过浏览器来访问的,所以离线状态下是无法使用app的.其中web app中的一些资源并不经常改变, ...
随机推荐
- 流畅的python--2 序列构成的数组
我们把文本.列表和表格叫做数据火车...FOR命令通常能作用于数据火车上. ---ABC Programmer's Handbook 不管是哪种数据结构,字符串.列表.字节序列.数组.XML ...
- Docker: 安装配置入门[二]
一.安装配置启动 1.环境 [root@docker1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@d ...
- C语言复习---矩形法求定积分函数
一:分析: 大一学习积分的时候,我们学习过,可以通过矩形法来求定积分. 思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形(或梯形)的面积进行求和. 二:简单的例子 ...
- Linux防火墙开放端口
# vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT -A INPUT - ...
- bzoj千题计划321:bzoj5251: [2018多省省队联测]劈配(网络流 + 二分)
https://www.lydsy.com/JudgeOnline/problem.php?id=5251 第一问: 左边一列点代表学生,右边一列点代表导师 导师向汇点连流量为 人数限制的 边 然后从 ...
- HDU 1016(素数环 深搜)
题意是说对一个长度为 n 的数环进行排列,使得相邻两数的和为素数,按从小到大的顺序依次输出. 因为是环,所以总能调整成以 1 为序列首输出.用深度优先搜索的方法即可.在判断素数时由于 n 小于 20, ...
- HTML第四耍 超链接标签
1.HTML 超链接(链接) 一.HTML 超链接 HTML中使用超级链接与网络上的另一个文档相连.几乎可以在所有的网页中找到链接.点击链接可以从一张页面跳转到另一张页面. 超链接可以是一个字,一个词 ...
- Spyder Crashed During Last Session
尝试一:Command: pyhton spyder --reset 尝试二:Command: spyder --show-console (突然就好了...)
- mysql语句之约束语句
约束语句: not null 非空 default 默认约束语句 unique 唯一约束语句 primary 主键 = 唯一 + 非空 auto_increment 自动增长 foreign key( ...
- centos6.8离线安装nginx
rpm可从官网下载镜像解压获得,推荐从http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/下载 安装gcc rpm -ivh mpfr-2.4. ...