在上一篇对Web Storage的介绍中,可以看到,使用Storage保存key—value对时,key、value只能是字符串,这对于简单的数据来说已经够了,但是如果需要保存更复杂的数据,比如保存类似于表记录的数据,那该怎么办呢?

下面提供一种解决方式,

按如下步骤来存储结构化的数据

1)把结构化数据封装成JSON对象

2)把JSON对象转化为字符串再进行保存

按如下步骤来读取结构化的数据

1)读取JSON格式的字符串

2)把JSON格式的字符串转化为JSON对象

3)通过JSON对象的属性来提取数据

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2>客户端留言板</h2>
留言标题:<input id="title" name="title" type="text" size="60" /><br />
留言内容:<textarea id="content" name="content" cols="50" rows="8"></textarea><br />
留言人:<input id="user" name="user" type="text" /><br />
<input type="button" value="添加留言" onclick="addMsg()" />
<input type="button" value="删除留言" onclick="clearMsg()" />
<hr />
<table style="width: 550px;">
<tr>
<th>留言标题</th>
<th>留言内容</th>
<th>留言用户</th>
<th>留言时间</th>
</tr>
<tbody id="show"></tbody>
</table>
<script type="text/javascript">
var loadMsg = function()
{
var tb = document.getElementById("show");
tb.innerHTML="";
for (var i=0;i<localStorage.length;i++)
{
var key = localStorage.key(i);
var date= new Date();
date.setTime(key);
var datestr = date.toLocaleDateString()+" "+date.toLocaleTimeString();
var msgStr = localStorage.getItem(key);
//把留言字符串转换为JavaScript对象
    var msg = JSON.parse(msgStr);
var row = tb.insertRow(i);
row.insertCell(0).innerHTML = value;
row.insertCell(1).innerHTML = datestr;
}
} var addMsg = function()
{
var titleElement = document.getElementById("title").value;
     var contentElement = document.getElementById("content").value;
var userElement = document.getElementById("user").value;
//将留言标题、留言内容、留言用户封装成对象
var msg={
title:titleElement,
content:contentElement,
user:userElement
}
var time = new Date().getTime();
//以当前时间为key来保存留言信息
localStorage.setItem(time,JSON.stringify(msg));
titleElement.value = "";
content.value = "";
userElement.value = "";
alert("保存数据");
loadMsg();
} function clearMsg()
{
localStorage.clear();
alert("全部留言信息已被清除");
loadMsg();
}
window.onload = loadMsg();
</script>
</body>
</html>

上面代码中加粗的代码就是保存结构化数据的关键代码。

最新文章

  1. 《Web开发中块级元素与行内元素的区分》
  2. MySQL 5.7 学习:安全相关特性
  3. 制作自己的嵌入式Linux电脑_转
  4. [20160731]read a file and print it on the screen
  5. postfix启动脚本
  6. UltraISO制作U盘启动盘安装Win7/10系统攻略
  7. 关于UIScrollView属性和方法的总结
  8. MySQL 设置远程访问
  9. mysql中 union是什么鬼
  10. 从length与length()开始谈Java
  11. mysql5.7版本开始创建用户需要create user
  12. Pandas 把数据写入csv
  13. json 常用的序列化 反序列化对象 代码
  14. Unity3d插件开发与SDK对接实战 学习
  15. 利用VS2017跨平台远程调试aspnetcore应用
  16. 单线程实现同时监听多个端口(windows平台c++代码)
  17. 关于日期转换的知识点(SimpleDateFormat)
  18. POJ 2236:Wireless Network(并查集)
  19. 把dataTable数据转换为Html
  20. PHP导入Excel表

热门文章

  1. winform label去背景
  2. Android Studio的初体验
  3. 搭建Hadoop环境(一)
  4. php serialize讲解与json性能测试
  5. WCF扩展记录服务调用时间
  6. [转]dojo/mouse
  7. VS 附加进程调试
  8. 【转】C#获取当前路径7种方法
  9. shared_ptr 的循环依赖问题
  10. [洛谷P2604][ZJOI2010]网络扩容