zoukankan      html  css  js  c++  java
  • 利用html5的localStorage结合jquery实现日常费用查询器

    最近工资都是不知不觉的用光了,然后朋友交了一个方法,

    把每个月用的钱都记录下来,到月底再看看哪些钱能省而不用,这样渐渐的就能省下钱来了。

    但是手动记录计算,查询数据又很麻烦。所以最近抽空,结合jquery和刚研究的html5的localStorage实现了一个日常费用查询器。

    技术嘛。就是要为解决问题而存在的。把技术转变为解决问题的产品才是王道。

    先介绍下localStorage。顾名思义,本地存储。

    本地存储解决方案很多,比如Flash SharedObject、Google Gears、Cookie、DOM Storage、User Data、window.name、Silverlight、Open Database等。
    借用网上的一张图来看下目前主流的本地存储方案:

    localStorage有自身的优点:容量大、易用、强大、原生支持;缺点是兼容性差些(chrome,  safari, firefox,IE 9,IE8都支持 localStorage,主要是IE8以下版本不支持)、安全性也差些(所以请勿使用localStorage保存敏感信息)。

    简单来说,把数据已键值对的形式,类似map,存在浏览器的localStorage中。这些数据是永久的,除非是主动删除。数据才会消失。

    它的空间也达到了5mb。而且之后可以继续扩大。对于一些小程序,例如这个日常费用查询器,需要存储数据的,但是数据又不多,没必要在连个数据库,而把数据直接存在浏览器中。再方便不过了。

    这里就不多介绍了,上自己的代码,欢迎拍砖。只是一个html页面就实现了所要的功能。界面没有美化,请谅解。

     只要把下面代码复制到一个html文件中就可以用了。jquery的时间插件datepicker我也直接调用外链了,不需要在下js文件了。

    刚用ie测了下。发现ie在使用JSON会出现点小问题.所以要用请用谷歌或者火狐浏览器把。

    
    
    <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html>
    	<head>	
    		<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    		<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> 
    		<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 
    		<style type="text/css">
    			*{
    				margin:0;
    				padding:0;	
    			}
    				body{
    				font:18px/28px Arial, Helvetica, sans-serif; color:#666;
    			}	
    			label{
    				100px;
    				float:left;
    			}
    			.left{
    				margin-left:450px;
    				display:block;
    				padding:5px;
    				300px;
    				float:left;
    				
    			}
    			.right{
    				float:left;
    			}
    			.th{
    			float:left;
    			100px;
    			text-align:center;
    			}
    			h1{
    			text-align:center;
    			}
    	</style>
    		<script type="text/javascript">
    			$(function(){		
    				//初始化当前日期
    				$('#inputDate').val(new Date().getFullYear()+"-"+(new Date().getMonth()+1)+"-"+new Date().getDate());
    				//日期控件
    				$('#inputDate,#beginDate,#endDate').datepicker({
    					showMonthAfterYear: true, // 月在年之后显示
    					dateFormat:'yy-mm-dd',   				
    				});
    				//本地存储
    				$('#add').click(function(){
    					if(('localStorage' in window) && window['localStorage'] !== null){
    						if(addcheck()){
    						var strname=$('#inputDate').val()+","+$('#money').val()+","+$('#description').val()+";";
    						//json形式存储
    						var strvalue={'inputDate':$('#inputDate').val(),'money':$('#money').val(),'description':$('#description').val()};							
    						localStorage.setItem(strname,JSON.stringify(strvalue));	
    						alert(strname+"保存成功");
    						$('#money').val("请输入金额");
    						$('#description').val("请输入使用描述");
    						}									
    					}else{
    						alert('天啊,你还在用这么土的浏览器');
    					}					
    				});
    				
    				$('#clear').click(function(){
    					if(('localStorage' in window) && window['localStorage'] !== null){
    						if(confirm("确认清除?")){
    							localStorage.clear();	
    						}									
    					}else{
    						alert('天啊,你还在用这么土的浏览器');
    					}					
    				});
    				
    				//查询
    				$('#query').click(function(){					
    					if(('localStorage' in window) && window['localStorage'] !== null){
    						if(querycheck()){
    							//清除之前添加的内容
    						$('.right table tr').remove();
    						//遍历
    						var begindate=$('#beginDate').val();
    						var enddate=$('#endDate').val();
    						var deslimit=$('#deslimit').val();
    						var sum=0;
    						var th="<tr><th class='th'>日期</th><th class='th'>金额</th><th class='th'>使用描述</th></tr>";
    						$(th).appendTo($('.right table'));
    						for(var i=0;i<localStorage.length;i++){
    							var key=localStorage.key(i);
    							var obj=localStorage.getItem(key);
    							var inputdate=JSON.parse(obj).inputDate;
    							var money=JSON.parse(obj).money;							
    							var description=JSON.parse(obj).description;
    							if((inputdate>=begindate)&&(inputdate<=enddate)){
    								if(!deslimit==""){
    									if(description.indexOf(deslimit)!=-1){
    										var temp="<tr><td class='th'>"+inputdate+"</td>"+"<td class='th'>"+money+"</td>"+"<td class='th'>"+description+"</td></tr>";
    										$(temp).appendTo($('.right table'));
    										sum=parseFloat(sum)+parseFloat(money);
    									}
    									
    								}else{
    									var temp="<tr><td class='th'>"+inputdate+"</td>"+"<td class='th'>"+money+"</td>"+"<td class='th'>"+description+"</td></tr>";
    									$(temp).appendTo($('.right table'));
    									sum=parseFloat(sum)+parseFloat(money);
    								}
    								
    							}						
    						}						
    						if($('.right table tr').size()==1){
    							var temp1="<tr><td class='th'> </td><td class='th'>没有匹配数据</td><td class='th'></td></tr>";
    							$(temp1).appendTo($('.right table'));
    						
    						}		
    						var tt="<tr><th class='th'>合计</th><th class='th'>"+sum+"</th></tr>";
    						$(tt).appendTo($('.right table'));						
    						}
    					}else{
    						alert('天啊,你还在用这么土的浏览器');
    					}					
    				});
    				
    				//删除
    				$('#delete').click(function(){					
    					if(('localStorage' in window) && window['localStorage'] !== null){
    						if(querycheck()){						
    						//遍历
    						var begindate=$('#beginDate').val();
    						var enddate=$('#endDate').val();
    						var deslimit=$('#deslimit').val();						
    						for(var i=0;i<localStorage.length;i++){
    							var key=localStorage.key(i);
    							var obj=localStorage.getItem(key);
    							var inputdate=JSON.parse(obj).inputDate;
    							var money=JSON.parse(obj).money;							
    							var description=JSON.parse(obj).description;
    							if((inputdate>=begindate)&&(inputdate<=enddate)){
    								if(!deslimit==""){
    									if(description.indexOf(deslimit)!=-1){
    										if(confirm("确认删除"+key)){
    											localStorage.removeItem(key);
    											$('#query').triggerHandler("click");
    										}
    										
    									}
    									
    								}else{
    									if(confirm("确认删除"+key)){
    											localStorage.removeItem(key);
    											$('#query').triggerHandler("click");
    										}
    								}
    								
    							}						
    						}												
    						}
    					}else{
    						alert('天啊,你还在用这么土的浏览器');
    					}					
    				});
    				
    				function addcheck(){
    					if($('#money').val()==""){
    							alert("请输入金额");
    							return false;
    						}
    					if($('#description').val()==""){
    							alert("请输入使用描述");
    							return false;
    					}
    					return true;	
    				}
    				
    				function querycheck(){
    					if($('#beginDate').val()==""){
    							alert("请输入开始日期");
    							return false;
    						}
    					if($('#endDate').val()==""){
    							alert("请输入结束日期");
    							return false;
    					}
    					return true;					
    				}
    				
    			})
    			$(function(){
    				 $('#money').focus(function(){ 
                          var money_value=$(this).val();
                          if(money_value=="请输入金额"){
                             $(this).val("");
                        }
                    })
                     $('#money').blur(function(){
                          var money_value=$(this).val();
                         if(money_value==""){
                             $(this).val("请输入金额");
                        }
                    })
    				 $('#description').focus(function(){ 
                          var description_value=$(this).val();
                          if(description_value=="请输入使用描述"){
                             $(this).val("");
                        }
                    })
                     $('#description').blur(function(){
                          var description_value=$(this).val();
                         if(description_value==""){
                             $(this).val("请输入使用描述");
                        }
                    })
    			})
    		</script>
    	</head>
    	
    	<body style="font-size:75%;">
    		<h1>日常费用查询器</h1>
    		<div class="left">
    			<div class="add">
    			<label>日期</label>
    			<input type="text" id="inputDate"readonly="readonly" /><br/>
    			<label>金额</label>
    			<input type="text" id="money" value="请输入金额"/><br/>
    			<label>使用描述</label>
    			<input type="text" id="description" value="请输入使用描述"/><br/>
    			<input type="submit" value="保存" id="add"/>						
    		</div>
    		<div class="query">
    			<label>开始日期</label>
    			<input type="text" id="beginDate"readonly="readonly" /><br/>
    			<label>结束日期</label>
    			<input type="text" id="endDate"readonly="readonly" /><br/>
    			<label>使用描述限制</label>
    			<input type="text" id="deslimit"/><br/>
    			<input type="submit" value="查询" id="query"/>
    			<input type="submit" value="删除查询记录" id="delete"/>
    			<input type="submit" value="清除所有" id="clear"/>			
    		</div>
    		</div>
    		
    		<div class="right">
    			<table>				
    			</table>
    		</div>
    	</body>
    </html>
    

      

  • 相关阅读:
    Unix配置定时执行任务
    在Mac上使用Make编译时出现clang: error: unsupported option '-fopenmp'的解决办法
    git的一些操作
    Github误上传多余的文件夹后解决办法
    Ubuntu18.04安装使用YOLOv3
    本地IDEA中使用Spark直连集群上的Hive
    如何利用dokcer提交我的比赛代码
    Activiti7之整合spring和spring boot
    Activiti7之网关
    Activiti7之组任务
  • 原文地址:https://www.cnblogs.com/yuxiaorong/p/2277949.html
Copyright © 2011-2022 走看看