1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="gb2312"> 5 <title>HTML5--JS API-本地存储 Web留言板</title> 6 <style type="text/css"> 7 *{margin:0; padding:0;} 8 body,input{font-size:14px; line-height:24px; color:#333; font-family:Microsoft yahei, Song, Arial, Helvetica, Tahoma, Geneva;} 9 h1{margin-bottom:15px; height:100px; line-height:100px; text-align:center; font-size:24px; color:#fff; background:#0051a1;} 10 #content #post,#comment p{zoom:1;} 11 #content #post:after,#comment p:after{display:block; height:0; clear:both; visibility:hidden; overflow:hidden; content:'.';} 12 .transition{-webkit-transition:all 0.5s linear; -moz-transition:all 0.5s linear; -o-transition:all 0.5s linear; -ms-transition:all 0.5s linear; transition:all 0.5s linear;} 13 #content{margin:0 auto; width:960px; overflow:hidden;} 14 #content #post{margin-bottom:15px; padding-bottom:15px; border-bottom:1px #d4d4d4 dashed;} 15 #content #post textarea{display:block; margin-bottom:10px; padding:5px; width:948px; height:390px; border:1px #d1d1d1 solid; border-radius:5px; resize:none; outline:none;} 16 #content #post textarea:hover{border:1px #9bdf70 solid; background:#f0fbeb;} 17 #content #post #postBt,#content #post #clearBt{margin-left:5px; padding:3px; float:right;} 18 #comment{overflow:hidden;} 19 #comment p{margin-bottom:10px; padding:10px; border-radius:5px;} 20 #comment p:nth-child(odd){border:1px solid #e3e197; background:#ffd;} 21 #comment p:nth-child(even){border:1px solid #adcd3c; background:#f2fddb;} 22 #comment p span{display:inline; float:left;} 23 #comment p .msg{width:738px;} 24 #comment p .datetime{width:200px; color:#999; text-align:right;} 25 </style> 26 <script type="text/javascript"> 27 var Storage = 28 { 29 saveData:function()//保存数据 30 { 31 var data = document.querySelector("#post textarea"); 32 if(data.value != "") 33 { 34 var time = new Date().getTime() + Math.random() * 5;//getTime是Date对象中的方法,作用是返回 1970年01月01日至今的毫秒数 35 localStorage.setItem(time, data.value + "|" + this.getDateTime());//将毫秒数存入Key值中,可以降低Key值重复率 36 data.value = ""; 37 this.writeData(); 38 } 39 else 40 { 41 alert("请填写您的留言!"); 42 } 43 }, 44 writeData:function()//输出数据 45 { 46 var dataHtml = "", data = ""; 47 for(var i = localStorage.length-1; i >= 0; i--)//效率更高的循环方法 48 { 49 data = localStorage.getItem(localStorage.key(i)).split("|"); 50 dataHtml += "<p><span class=\"msg\">" + data[0] + "</span><span class=\"datetime\">" + data[1] + "</span></p>"; 51 } 52 document.getElementById("comment").innerHTML = dataHtml; 53 }, 54 clearData:function()//清空数据 55 { 56 if(localStorage.length > 0) 57 { 58 if(window.confirm("清空后不可恢复,是否确认清空?")) 59 { 60 localStorage.clear(); 61 this.writeData(); 62 } 63 } 64 else 65 { 66 alert("没有需要清空的数据!"); 67 } 68 }, 69 getDateTime:function()//获取日期时间,例如 2012-03-08 12:58:58 70 { 71 var isZero = function(num)//私有方法,自动补零 72 { 73 if(num < 10) 74 { 75 num = "0" + num; 76 } 77 return num; 78 } 79 80 var d = new Date(); 81 return d.getFullYear() + "-" + isZero(d.getMonth() + 1) + "-" + isZero(d.getDate()) + " " + isZero(d.getHours()) + ":" + isZero(d.getMinutes()) + ":" + isZero(d.getSeconds()); 82 } 83 } 84 85 window.onload = function() 86 { 87 Storage.writeData();//当打开页面的时候,先将localStorage中的数据输出一边,如果没有数据,则输出空 88 document.getElementById("postBt").onclick = function(){Storage.saveData();}//发表评论按钮添加点击事件,作用是将localStorage中的数据输出 89 document.getElementById("clearBt").onclick = function(){Storage.clearData();}//清空所有已保存的数据 90 } 91 </script> 92 </head> 93 94 <body> 95 <h1>HTML5--JS API-本地存储 Web留言板</h1> 96 <div id="content"> 97 <div id="post"> 98 <textarea class="transition"></textarea> 99 <input id="postBt" type="button" value="发表评论"/> 100 <input id="clearBt" type="button" value="清空所有已保存的数据"/> 101 </div> 102 <div id="comment"></div> 103 </div> 104 </body> 105 </html>