有关localStorage的一个小demo

IE8以及以上的主流浏览器都支持,但是在使用之前也要先判断浏览器是否支持,它和sessionStorage基本上是一样的,它俩的区别就在于存储的时间不同,前者可永久存储,后者是当窗口一关闭就不复存在,我比较倾向于前者。
这个小demo是动态的将文本框中的值加到表格中,并提供删除功能,我用的是文本框的oninput事件,为了支持IE又用了onpropertychange事件,为什么不直接用change事件,因为这个事件在文本框失去焦点后才会触发,给不了我想要的结果

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <input type="text" value="" id="inp" onpropertychange="show()" oninput="show()"/>
        <script src="jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script>
        <table border=1 style="width:100%" id="table1" cellpadding="3" cellspacing="0">
            <tr>
                <th>sku</th>
                <th>数量</th>
                <th>操作</th>
            </tr>
            <tr>
                <td>sku</td>
                <td>1</td>
                <td><span>删除</span></td>
            </tr>
        </table>
        <script type="text/javascript">
        //验证该浏览器是否支持localStorage
        if(window.localStorage){
            var store=window.localStorage;
        }else{
            alert('你的浏览器不支持localStorage!');
        }

        //用事件委托绑定事件,否则动态生成的标签可能没有该事件
        $('table').on('click','span',function(){
            var val=$(this).parent().siblings('td:first').text();
            //删除指定的内容
            store.removeItem(val);
            //删除全部内容
            //store.clear();
            $(this).parents('tr').remove();
        })

        //初始化,将localStorage中的数据显示到相应表格
        function init(){
            for(var i=0;i<store.length;i++){
                //通过key方法遍历键值信息
                var sku=store.key(i);
                var num=store.getItem(sku);
                $("#table1").append("<tr id='"+sku+"' ><td>"+sku+"</td><td id='"+sku+"_num' >"+num+"</td><td><span>删除</span></td></tr>");
            }
        }
        init();

        function show(){
            var val=document.getElementById('inp').value;
            //将input中的值作为键,值为input中的值出现的次数
            var num = store.getItem(val);
            if(num){
                num ++;
                store.setItem(val,num);
            }else{
                num =1;
                store.setItem(val,num);
            }
            if($("#"+val+"_num").text()){
                $("#"+val+"_num").text(num);
            }else{
                $("#table1").append("<tr id='"+val+"' ><td>"+val+"</td><td id='"+val+"_num' >"+num+"</td><td><span>删除</span></td></tr>");
            }

            var arr3=[];//以键值对的形式存到数组中
            for(var i=0;i<store.length;i++){
                var sku=store.key(i);
                var num=store.getItem(sku);
                arr3.push({sku:num,key:sku});
            }
        }
        </script>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值