javascript本地化存储localStorage的实战用法

简介: javascript本地化存储localStorage的实战用法

HTML

<div class="col-lg-6" style="margin-top:20px;">
    <div class="input-group">
        <input type="text" class="form-control" id="keywords" placeholder="输入关键词">
                <span class="input-group-btn">
                    <button class="btn btn-default" id="search" type="button">搜索</button> <span id="empty">清除历史</span>
                </span>
    </div>
</div>
</div>
<br><br>
<div style="margin:20px 20px 0px 20px;">
    <span>搜索历史</span>
</div>
<div style="margin:20px;" id="history"></div>


JS代码

    $(function () {
        update_history();
        // 绑定回车事件
        $(document).keydown(function (event) {
            if (event.keyCode == 13) {
                $("#search").click();
            }
        });
        // 搜索点击事件
        $("#search").click(function () {
            var keywords = $("#keywords").val();
            history(keywords); //添加到缓存
            update_history(); //更新搜索历史
        })
        // 清空搜索历史
        $("#empty").click(function () {
            mystorage.remove('keywords');
            $("#history").html(" ");
        })
    })
    /**
     * [update_history 更新搜索历史]
     * @return {[type]} [description]
     */
    function update_history() {
        //console.log(mystorage.get("keywords"));
        var history = mystorage.get("keywords");
        if (history) {
            var html = "";
            $.each(history, function (i, v) {
                html += "<a class='btn btn-default' id='btn" + i + "' href='javascript:" + getVal(i, v) + ";'  role='button'>" + v + "</a> "
            })
            $("#history").html(html);
        }
    }
    //获取历史记录传递到输入框;
    function getVal(i, v) {
        $(function () {
            $("#btn" + i).click(function () {
                $("#keywords").val(v);
            })
        })
    }
    /**
     * [history //搜索历史函数存储]
     * @param  {[type]} value [搜索词]
     * @return {[type]}       [description]
     */
    function history(value) {
        var data = mystorage.get("keywords");
        if (!data) {
            var data = []; //定义一个空数组
        } else if (data.length === 10) { //搜索历史数量
            data.shift();  //删除数组第一个元素有
        } else {
        }
        if (value) {  //判断搜索词是否为空
            if (data.indexOf(value) < 0) {  //判断搜索词是否存在数组中
                data.push(value);    //搜索词添加到数组中
                mystorage.set("keywords", data);  //存储到本地化存储中
            }
        }
    }
    /**
     * [mystorage 存储localstorage时候最好是封装一个自己的键值,在这个值里存储自己的内容对象,封装一个方法针对自己对象进行操作。避免冲突也会在开发中更方便。]
     * @param  {String} ){ var ms [description]
     * @return {[type]}     [description]
     */
    var mystorage = (function mystorage() {
        var ms = "mystorage";
        var storage = window.localStorage;
        if (!window.localStorage) {
            alert("浏览器不支持localStorage");
            return false;
        }
        var set = function (key, value) {
            //存储
            var mydata = storage.getItem(ms);
            if (!mydata) {
                this.init();
                mydata = storage.getItem(ms);
            }
            mydata = JSON.parse(mydata);
            mydata.data[key] = value;
            storage.setItem(ms, JSON.stringify(mydata));
            return mydata.data;
        };
        var get = function (key) {
            //读取
            var mydata = storage.getItem(ms);
            if (!mydata) {
                return false;
            }
            mydata = JSON.parse(mydata);
            return mydata.data[key];
        };
        var remove = function (key) {
            //读取
            var mydata = storage.getItem(ms);
            if (!mydata) {
                return false;
            }
            mydata = JSON.parse(mydata);
            delete mydata.data[key];
            storage.setItem(ms, JSON.stringify(mydata));
            return mydata.data;
        };
        var clear = function () {
            //清除对象
            storage.removeItem(ms);
        };
        var init = function () {
            storage.setItem(ms, '{"data":{}}');
        };
        return {
            set: set,
            get: get,
            remove: remove,
            init: init,
            clear: clear
        };
    })();


Done!

相关文章
|
2月前
|
JavaScript 前端开发
javascript中的switch用法
javascript中的switch用法
|
4月前
|
JavaScript Android开发
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---js文件打包发布成APK文件
126 0
AutoJs4.1.0实战教程---js文件打包发布成APK文件
|
4月前
|
存储 JavaScript 前端开发
JavaScript中的localStorage
JavaScript中的localStorage
22 0
|
5月前
|
JavaScript 数据管理
Node.js 文件系统的各种用法和常见场景
Node.js 文件系统的各种用法和常见场景
53 1
|
4月前
|
存储 JavaScript 前端开发
js中session、cookie、 localStorage和SessionStorage的区别和特点
js中session、cookie、 localStorage和SessionStorage的区别和特点
|
5月前
|
人工智能 JavaScript 前端开发
【前端|JS实战第1篇】使用JS来实现属于自己的贪吃蛇游戏!
【前端|JS实战第1篇】使用JS来实现属于自己的贪吃蛇游戏!
|
2天前
|
存储 SQL 前端开发
React&Nest.js社区平台(四)——✏️文章发布与管理实战
React&Nest.js社区平台(四)——✏️文章发布与管理实战
|
7天前
|
JavaScript 前端开发
js开发:请解释this关键字在JavaScript中的用法。
【4月更文挑战第23天】JavaScript的this关键字根据执行环境指向不同对象:全局中指向全局对象(如window),普通函数中默认指向全局对象,作为方法调用时指向调用对象;构造函数中指向新实例,箭头函数继承所在上下文的this。可通过call、apply、bind方法显式改变this指向。
7 1
|
15天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
16 0
|
27天前
|
存储 JavaScript 前端开发
在浏览器中存储数组和对象(js的问题)
在浏览器中存储数组和对象(js的问题)
10 0