在上一篇对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>

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

H5中使用Web Storage来存储结构化数据的更多相关文章

  1. H5新增的Web Storage本地存储

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...

  2. 利用Gson和SharePreference存储结构化数据

    问题的导入 Android互联网产品通常会有很多的结构化数据需要保存,比如对于登录这个流程,通常会保存诸如username.profile_pic.access_token等等之类的数据,这些数据可以 ...

  3. 使用json存储结构化数据

    从文件中读写字符串很容易.数值就要多费点儿周折,因为read ()方法只会返回字符串,应将其传入int()这样的函数,就可以将'123'这样的字符串转换为对应的数值 123.当你想要保存更为复杂的数据 ...

  4. WEB 面向开发者的结构化数据

    通常用于google搜索 See also: video 探索搜索库

  5. Bigtable:一个分布式的结构化数据存储系统

    Bigtable:一个分布式的结构化数据存储系统 摘要 Bigtable是一个管理结构化数据的分布式存储系统,它被设计用来处理海量数据:分布在数千台通用服务器上的PB级的数据.Google的很多项目将 ...

  6. H5本地储存Web Storage

    一.本地存储由来的背景 由于HTML4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Cookie的这些限制,也就导致了C ...

  7. 解析H5本地储存Web Storage

    一.本地存储由来的背景 由于HTML4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Cookie的这些限制,也就导致了C ...

  8. html5中的Web Storage

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage.sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有 ...

  9. MySQL 5.7:非结构化数据存储的新选择

    本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...

随机推荐

  1. APP与智能手表是如何通信的【本文摘抄自深圳尚锐科技】

    APP与智能手表是如何通信的 1. Android 与服务器的通信方式主要有两种,一种是http 通信 ,一种是socket 通信. 两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请 ...

  2. lintcode-94-二叉树中的最大路径和

    94-二叉树中的最大路径和 给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和) 样例 给出一棵二叉树: 返回 6 标签 动态规划 ...

  3. java线程(6)——线程池(下)

    上篇博客java线程(5)--线程池(上)介绍了线程池的基本知识,这篇博客我们介绍一下常用的ThreadPoolExecutor. 定义 类图关系: ThreadPoolExecutor继承了Abst ...

  4. 【BZOJ 2553】[BeiJing2011]禁忌 AC自动机+期望概率dp

    我一开始想的是倒着来,发现太屎,后来想到了一种神奇的方法——我们带着一个既有期望又有概率的矩阵,偶数(2*id)代表期望,奇数(2*id+1)代表概率,初始答案矩阵一列,1的位置为1(起点为0),工具 ...

  5. ionic3自定义图标

    http://blog.csdn.net/qq993284758/article/details/78107412

  6. ServletContext 接口读取配置文件要注意的路径问题

    在建立一个maven项目时,我们通常把一些文件直接放在resource下面,在ServletContext中有getResource(String path)和getResourceAsStream( ...

  7. Django请求原理

    总结一下: 1. 进来的请求转入/hello/. 2. Django通过在ROOT_URLCONF配置来决定根URLconf. 3. Django在URLconf中的所有URL模式中,查找第一个匹配/ ...

  8. eclipse web(Spring+SpringMVC+Hibernate)项目迁移至intellij idea

    1.导入Eclipseweb项目 跟着导航一直下一步 出现警告不要担心,先点击确认,到后面再进行设置jdk 成功导入项目后如下图 2.对导入的项目进行配置按Ctrl+shift+alt+s(或下图中的 ...

  9. DIV + CSS问题收集

    div里面有三列数据,怎么让他竖向排列,在css中怎么设置 https://zhidao.baidu.com/question/712007772597664245.html css设置块元素在div ...

  10. iOS 单元测试(Unit Test 和 UI Test)

    之前一直搞过~~最近试了一下下,完美~~ 附上一篇文章,不同的伙伴可以看看: http://www.jianshu.com/p/009844a0b9edUnitTest(简单的单元测试使用) http ...