zoukankan      html  css  js  c++  java
  • 使用cookie记录点击/浏览历史并以json格式存入

    好久没写博客了。今天就写一个小demo。

    使用cookie记录每次点击的历史记录,并且以json的格式存入cookie,如果相同的浏览记录,则不记录

    demo中只设置了记录最新的3条数据。。

    if (len > 2) {
                        json1.splice(0, 1);
    }

    更多的可修改下面代码中的 2。

    具体代码如下:

    html部分:

    <div class="clx-3">
        <ul id="searchCityListB">
            <li><a class="col1" data-areaId="1" >测试1</a></li>
            <li><a class="col1" data-areaId="2" ><span class="">测试2</span></a></li>
            <li><a class="col1" data-areaId="3" ><span class="">测试3</span></a></li>
            <li><a class="col1" data-areaId="4" ><span class="">测试4</span></a></li>
            <li><a class="col1" data-areaId="5" ><span class="">测试5</span></a></li>
            <li><a class="col1" data-areaId="6" ><span class="">测试6</span></a></li>
        </ul>
    </div>

    css部分:

    *{margin:0; padding: 0;}
    .clx-3{ width: 100%;}
    .clx-3 li{ float: left; list-style: none; width: 33.333%; line-height: 50px; text-align: center; border-bottom: #ddd 1px solid; border-right: #ddd 1px solid; box-sizing: border-box}
    .clx-3 li:nth-child(3n+0){ border-right: none}

    js部分:

    $(document).on('click', '#searchCityListB li', function (event) {
            var areaIdS = $(this).children().attr("data-areaid");
            var cityNameS = $(this).children().text();
            setHistoryK(cityNameS, areaIdS);
        });
    
        //设置cookies
        function setHistoryK(cityNameS, areaIdS) {
            var len = 0;
            var canAdd = true;
            var historyData, json1;
            var firstStr = " [" +
                    " {"cityName":"" + cityNameS + ""," +
                    " "areaId":" + areaIdS + "}" +
                    " ]";
    
            var jsonFirstStr = JSON.stringify(firstStr);
    
            if (!getCookie("cityHistory")) { //第一次的时候需要初始化
                setCookie("cityHistory", jsonFirstStr);
            } else {  //已经存在
                historyData = getCookie("cityHistory");
                json1 = eval("(" + historyData + ")");
                if (typeof(json1) == "string") {
                    json1 = JSON.parse(json1);
                }
    
                len = json1.length;
    
    
                $(json1).each(function () {
                    if (this.cityName == cityNameS) {
                        canAdd = false;
                        return false;
                    }
                });
    
                if (canAdd == true) {
                    if (len > 2) {
                        json1.splice(0, 1);
                    }
    
                    var newJsonStr = {"cityName": cityNameS, "areaId": areaIdS},jsonSetStr;
                    json1.push(newJsonStr); //添加一个新的记录
                    jsonSetStr = JSON.stringify(json1);
                    setCookie("cityHistory", jsonSetStr);
                    console.log(jsonSetStr);
                }
            }
    
    
        }

    引用一个cookie.js

    具体代码如下:

    //写cookies
    function setCookie(name,value)
    {
        var Days = 30;
        var exp = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }
    
    //获取cookies
    function getCookie(name)
    {
        var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
        if(arr=document.cookie.match(reg))
            return unescape(arr[2]);
        else
            return null;
    }
    
    //检查cookies
    function checkCookie(c_name){
        if (document.cookie.length>0)
          {
          c_start=document.cookie.indexOf(c_name + "=")
          if (c_start>0)
            var arr = new Array();
           arr = document.cookie.split(";");
           return arr.length
          }
    }
    
    
    //删除cookies
    function delCookie(name)
    {
        var keys=document.cookie.match(/[^ =;]+(?==)/g);
        if (keys) {
            for (var i = keys.length; i--;)
                document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString()
        }
    }
  • 相关阅读:
    AutoMapper,对象映射的简单使用
    Angular 4.0从入门到实战
    IE报错:The given path's format is not supported
    原生js中slice()方法和splice()区别
    使用jquery插件ajaxfileupload一次上传多个文件,示例
    C#路径中获取文件全路径、目录、扩展名、文件名称
    NET二进制图片存储与读取的常见方法,iTextSharp添加图片生成PDF文件
    Type.GetType()反射另外项目中的类时返回null的解决方法
    C#中对于Enum类型的遍历
    读取word到二进制,再转成word
  • 原文地址:https://www.cnblogs.com/webQdesign/p/6398866.html
Copyright © 2011-2022 走看看