localStorage存储结构化数据

李刚的《疯狂HTML5+CSS3+JavaScript讲义》书中,在541页讲到存储结构化数据是有一段代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>客户端记事本</h2>
    标题:<input type="text" id="title" name="title" size="60"/><br/><br/>
    事件信息:<textarea name="content" id="content" cols="50" rows="8"></textarea><br/>
    添加人:<input type="text" id="user" name="user"/><br/><br/>
    <input type="button" value="添加事件" οnclick="addMsg();"/>
    <input type="button" value="清除事件" οnclick="clearMsg();"/><br/>
    <hr>
    <table width="600px" border="1">
        <tr>
            <td>标题</td>
            <td>标题事件内容</td>
            <td>添加人</td>
            <td>添加时间</td>
        </tr>
        <tbody id="show"></tbody>
    </table>
    <script type="text/javascript">
        var addMsg = function () {
            var titleElement = document.getElementById("title");
            var contentElement = document.getElementById("content");
            var userElement = document.getElementById("user");
            var msg = {
                title: titleElement.value,
                content: contentElement.value,
                user: userElement.value
            }
            var time = new Date().getTime();
            localStorage['_fk'+time] = JSON.stringify(msg);
            titleElement.value = "";
            contentElement.value = "";
            userElement.value = "";
            alert("数据已经保存。");
            loadMsg();
        }
        var loadMsg = function () {
            var tb = document.getElementById("show");
            tb.innerHTML = "";
            for(var i = 0 , j=0; i < localStorage.length ; i++) {
                var key = localStorage.key(i);
                if(key.indexOf('_fk') == 0) {
                    var date = new Date();
                    date.setTime(key.substring(3));
                    var datestr = date.toLocaleDateString() + "&nbsp;" + date.toLocaleTimeString();
                    var msgStr = localStorage[key];
                    var msg = JSON.parse(msgStr);
                    var row = tb.insertRow(j++);
                    row.insertCell(0).innerHTML = msg.title;
                    row.insertCell(1).innerHTML = msg.content;
                    row.insertCell(2).innerHTML = msg.user;
                    row.insertCell(3).innerHTML = datestr;

                }
            }
        }
        var clearMsg = function () {
            localStorage.clear();
            alert("全部事件已被删除。");
            loadMsg();
        }
        window.onload = loadMsg();
    </script>
</body>
</html>
其中非常清楚明白地说明了如何存储结构化数据。

首先,将你需要存储的数据封装成对象

var msg = {
    title: titleElement.value,
    content: contentElement.value,
    user: userElement.value
}

然后使用JSON对象的stringify()方法吧javascript对象转换成JSON字符串,目的是为了方便保存这个字符串。

localStorage['_fk'+time] = JSON.stringify(msg);

读取结构化数据是,利用JSON对象的parse()方法吧JSON字符串恢复成javascript对象即可。

var msgStr = localStorage[key];
var msg = JSON.parse(msgStr);
非常容易看出,msgStr=JSON.stringify(msg)

我的理解:localStorage就相当于一个储存室,里面有家用电器,桌椅板凳,瓜果蔬菜,总之有很多玩意,这些玩意都有编号,比如电视机1号,冰箱2号。有一天你想往里放置一些水果,猕猴桃,香蕉,葡萄,橘子等一些吧,这些都是一类嘛。家里面的东西你得放置的有条理啊,所以你找了一筐,咔咔一顿干,把水果全扔框里了, 这个框和里面的水果就是你封装成的javascript对象(msg)。装完后,你突然想到你的城市女友特别喜欢吃水果,为了表达你的爱,你指定得把你的所有水果都留着给你女友吃啊(女人嘛,女人心海底针,说不准她爱吃啥,都留着呗),为了让水果保鲜,你找了一个大个的冰柜,这个冰柜就是JSON.stringify()。冰柜找来后,接下来肯定要把水果装进去啊。此时此刻你就会想,时间就是金钱,劳资是要干大事的,往冰柜里挨个装水果,是老爷们儿干的活吗?所以你会毫不犹豫地咔咔一顿干,把框子直接搁冰柜里了,这就是JSON.stringify(javacript对象),因为你家老衬钱了,好多冰柜,为了区别你在冰柜外面贴了一个号:520(这个就是key)。过了一日,你女朋友果然来了,只是单纯地来吃水果哦,哈哈。想吃水果分三步:首先根据储存室里的编号找到冰箱(var msgStr = localStorage[key];)然后把冰箱门打开(var msg=JSON.parse(msgStr);),打开冰箱门后,你看到的是个框msg,里面装着水果;最后你想吃啥从框里拿就好了嘛。

学习前端能这么愉快啊,关键在拓展思维,哈哈哈哈哈哈哈哈哈啊哈哈。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值