首页 > 解决方案 > 如何创建一个跨页面存储多个值的 cookie 按钮

问题描述

我使用以下代码在每次单击同一个按钮时设置一个 cookie,每次单击该按钮时都会增加一个数字值并将产品的标题保存为值(例如名称:1,值:汽车) :

var num=1;
  function addCookie() {

        var expString = "; expires=" + date.toGMTString();
        var cookievalue=escape(document.querySelector("[name=addpart]").value) + ";";
        document.cookie=num + "=" + cookievalue + expString + "; path=/"; 
        num++;
    }

它在我的页面上运行良好,每次点击它时都会设置一个新的 cookie 名称,然后是 '1',然后是 '2',然后是 '3' 等等,但显然这只会让我:

但是,当我转到另一个页面并再次单击该按钮时,它会覆盖名称为 1 的 cookie 并再次启动该过程。

我想知道如何跨页面继续此按钮的名称计数?这样用户就可以浏览产品并单击按钮,该按钮实质上会生成一个稍后可以调用的列表:

我知道为每个页面创建新按钮会更容易,但我在我的网站上使用模板系统,我们有成千上万的产品页面,所以这对我来说不是一个可行的选择。

标签: javascriptphpcookies

解决方案


存储对象数组非常容易,我认为使用 localStorage 而不是 cookie 更好。

//example of first structure
localStorage.setItem("visits", JSON.stringify({"1":[],"2":[],"3":[]}));

//getting the item
var visits = JSON.parse(localStorage.getItem("visits"));

//different visits

visits["1"].push("Car");
visits["1"].push("Bike");
visits["1"].push("Something");

visits["2"].push("Bike");
visits["2"].push("Bike");
visits["2"].push("Something");

visits["3"].push("Something");
visits["3"].push("Something");
visits["3"].push("Something");

//setting the item
localStorage.setItem("visits", JSON.stringify(visits));

console.log(visits)

此处示例https://jsfiddle.net/0kp9s2bv/


推荐阅读