1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 <style>
7 #div1{
8 400px;
9 height: 200px;
10 overflow:auto;
11 border: #000000 1px solid;
12 }
13 </style>
14 </head>
15 <body>
16 <div id="div1">
17 <ul id="ul1"></ul>
18 </div>
19 <input type="text" id="input1" />
20 <input type="button" id="btn" value="留言" />
21 <script type="text/javascript" src="cookie.js" ></script>
22 <script>
23 btn.onclick = function(){
24 // 输入框的内容
25 var str = input1.value;
26 input1.value = "";
27 // 防止xss攻击
28 str = str.replace(/</g,'<'); // /</ 表示正则对象,g表示全局匹配
29 str = str.replace(/>/g,'>'); // 语义为,在当前的str中,全局查找>,替换成>
30 // 创建li,显示在ul中
31 var li = document.createElement("li");
32 ul1.appendChild(li);
33 li.innerHTML = str;
34 //li.innerText = str;
35 // 用cookie将str数据存储起来
36 // 先把原始数据取出来
37 // 第一次获取data这个cookie时,r拿到的时undefined
38 var r = getCookie("data"); // r='[str1, str2....]'
39 var arr;
40 if( r ){ // 如果存在原始数据的话,把原始数字这个字符串,转换为数组对象
41 arr = JSON.parse(r); // arr = JSON.parse('[str1, str2....]')
42 }else{ // 如果不存在原始数据时,即第一次添加数据,所以arr是空数组
43 arr = [];
44 }
45 arr.push(str); // 把当前输入框中的值,追加存储到数组中
46 // 把数组,转换为字符串后,保存到cookie中
47 var jsonstr = JSON.stringify(arr);
48 setCookie("data", jsonstr, 7);
49 }
50
51 // 打开页面时,把data,显示到ul中
52 var r = getCookie("data");
53 if( r ){ // 如果存在数据
54 // 把字符串转换为数组
55 var arr = JSON.parse(r);
56 // 循环
57 for( var i=0,len=arr.length; i<len; i++ ){
58 var li = document.createElement("li");
59 ul1.appendChild(li);
60 li.innerHTML = arr[i];
61 }
62 }else{
63 // 如果不存在数据
64 }
65
66
67 </script>
68 </body>
69 </html>
1 function setCookie( cookieName, cookieValue, d, path ){
2 var str = cookieName+"="+ encodeURIComponent(cookieValue);//编码
3 if( d ){ // 如果设置了过期时间
4 var dt = new Date();
5 dt.setDate( dt.getDate()+d );
6 str += ";expires="+dt.toGMTString();
7 }
8 if( path ){ // 如果设置了path属性
9 str += ";path="+path;
10 }
11 document.cookie = str;
12 }
13 function getCookie( cookieName ){
14 var str = decodeURIComponent(document.cookie);//解码
15 var arr = str.split("; "); // 注意根据分号和空格拆分
16 for( var i=0,len=arr.length; i<len; i++ ){
17 var c = arr[i].split("=");
18 if( c[0]==cookieName ){
19 // return c[1];// 前提是,所设置的cookie内容中没有等号
20 // 如果cookie中存在等号的话,截取的是第一个等号后面的所有数据
21 return arr[i].substr(cookieName.length+1)
22 }
23 }
24 }